Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - expwnent

Pages: [1] 2 3 ... 5
1
https://github.com/DFHack/dfhack/pull/667

https://github.com/DFHack/dfhack/pull/679

I'm just posting this here to get input from modders / users who don't have github accounts. The main issue is whether backwards compatibility is more important to users in general than including scripts in the main repo. I realize that not all scripts already in the main repo follow the conventions but that is a goal for the future and I think it would be a bad idea to make negative progress on that by allowing new scripts which don't follow them. At a minimum new scripts should follow the utils.processArgs method of processing arguments unless they have a good reason not to. Ideally they should export their functionality using the new script_environment system but that can be fixed without breaking backwards compatibility so that's not as big an issue.

I feel that standardization is more important, because once things are standardized backwards compatibility will follow and it will be easier for both players and modders to learn (and remember) how to use scripts. After the initial pain of converting to the new system, we'll have both backwards compatibility and standardization.

2
This is a beta version. Use at your own risk.

https://github.com/expwnent/dfhack/blob/create-unit/scripts/teleport.lua
https://github.com/expwnent/dfhack/blob/create-unit/scripts/modtools/create-item.lua
https://github.com/expwnent/dfhack/blob/create-unit/scripts/modtools/create-unit.lua
https://github.com/expwnent/dfhack/blob/create-unit/scripts/modtools/equip-item.lua

Install teleport to hack/scripts and install the rest to hack/scripts/modtools. Overwrite old versions with the new ones.

Please test thoroughly and post results here.

Notes:

1. Created units are naked. I will make a separate script for managing equipment later. Currently implemented. See modtools/equip-item.lua.

2. If you try to make a tame hydra in vanilla you're going to have "fun". Tame dogs seem to work fine. I'm not sure whether you're supposed to add tame animals to your civ / group or not. Test it and let me know so I can document it. If you use -flagClear [ resident ] then it should work on megabeasts.

3. Invaders probably won't work properly because that requires creating a new invasion id and a few other things. I'll make a separate script for managing custom invasions later.

4. Once this script has been beta tested I will do my best to maintain backwards compatibility, but I make no promises until then.

5. I wasn't sure what unit flags to set for different circumstances so I let the user manually specify the flags. See here for the flags you can set. You can also clear flags if DF automatically sets them and you don't want it to.

6. Units are not named (in any useful way) by this script. Sometimes they're named something like "Dwarf -13568432", which doesn't seem to cause any other problems but it is strange and I'm not sure why it happens. As of version 0.2, use the "-name" argument to give the unit a random civilization-appropriate name. Use "-name MOUNTAIN" for dwarf names, "-name EVIL" for goblin names, etc.

7. Units may be placed in surprising places. Use the loo(k) mode to control it manually for now. You can specify location with the "-location" argument.

Examples:

Code: [Select]
modtools/create-unit -race DWARF -caste MALE -civ_id \\LOCAL -group_id \\LOCAL
modtools/create-unit -race DWARF -caste FEMALE -civ_id \\LOCAL -group_id \\LOCAL
modtools/create-unit -race HYDRA -caste FEMALE
modtools/create-unit -race DOG caste FEMALE -civ_id \\LOCAL -group-id \\LOCAL -domesticate
modtools/create-unit -race DWARF -caste MALE -civ_id \\LOCAL -group_id \\LOCAL -flagSet [ had_mood vision_good compute_health ]
modtools/create-unit -race DWARF -caste MALE -civ_id \\LOCAL -group_id \\LOCAL -name

3
Utilities and 3rd Party Applications / [DFHack] item-trigger crashes
« on: December 07, 2014, 05:29:28 am »
I'm getting reports that item-trigger crashes after unpausing in fort mode but I can't reproduce the error. I would appreciate it if more people could test it and post their results along with what OS they are using.

It seems to be still present even in DFHack 0.40.19-r1.

4
Even though the most recent release was only a few weeks ago, I've done a lot since then, and I've broken backwards compatibility in many ways. Therefore I'm releasing an unstable beta version for testing purposes. Changelog

Do not download this unless you know what you are doing and you have your saves backed up.

If anyone can beta test this version I would greatly appreciate it. All the blah-trigger scripts especially need testing, but the new events could use some too. The item-trigger and interaction-trigger scripts are particularly useful.

Download Link (Windows)

Strike the scripts!

---

Also try this script: https://github.com/expwnent/dfhack/blob/scriptOrganization/scripts/modtools/random-trigger.lua

5
In the next release of DFHack, raw-script interfaces are going to be replaced with registration. This means that instead of saying

Code: [Select]
[REACTION:TURN_INTO_CHICKEN]
[NAME:chickenize]
[BUILDING:BUILDING_CHICKEN:NONE]
[PRODUCT:100:1:BOULDER:INORGANIC:CHICKEN_MAT]

[INORGANIC:CHICKEN_MAT]
[SYNDROME]
[CE:TURN_INTO_CHICKEN_EXCEPT_WITH_CORRECT_SYNTAX]
[NAME:"turn into chicken"]
[SYN_CLASS:\AUTO_SYNDROME]
[SYN_CLASS:\COMMAND]
[SYN_CLASS:reveal]
[SYN_CLASS:all]

you just have

Code: [Select]
[REACTION:TURN_INTO_CHICKEN]
[NAME:chickenize]
[BUILDING:BUILDING_CHICKEN:NONE]

and then in onLoad.init

Code: [Select]
modtools/reaction-trigger -reactionName TURN_INTO_CHICKEN -command shape-change -target \WORKER_ID -creature CREATURE_CHICKEN

You could put it in dfhack.init, and it will work, but you really shouldn't. This sort of thing depends on what mods you're using and if you download someone else's save you'll mess it up if your dfhack.init has your-mod-specific stuff and not-their-mod-specific-stuff-that-it-shouldn't-depend-on-but-it-does.

First of all, I realize this is going to break a lot of stuff, so I made a special script to help with the transition process. I ran it on a (slightly old) version of Masterwork and it produced this output. It should mostly work, but all syndromes must now be given unique names in order to work with reaction-trigger. The only change you'll need to make is to paste that output into onLoad.init and make sure syndromes have unique names. That being said, the vast majority of the time you don't need a syndrome at all. If it's just a transformation, use shapechange. If it's a command, just use reaction-trigger directly. The only time you need a syndrome is if you actually want to infect them with a syndrome as an end result.

The current version of the script is here.

The current version of reaction-trigger is here, and depends on this. It'll all be in the next version. I'm just putting a quick early draft here so modders can play with it before the next release.

I noticed a few weird things in Masterwork like \COMMAND \LOCATION without a command name in between, and in some cases not even present, so I filtered those from the file. I assume they're just placeholders. Looking at the source of autoSyndrome, they don't actually do anything.

Let me know what else would be useful output in the file it produces.

6
Utilities and 3rd Party Applications / DFHack 0.43.03-r1
« on: June 20, 2014, 02:40:48 am »
DFHack is an attempt to unite the various ways hack tools access DF memory and allow for easier development of new tools (and of course, make the game more enjoyable for players). It comes with some useful tools that can fix your fort and make things easier to handle. DFHack integrates with Dwarf Fortress and extends it with plugins, a command console and a way to bind hotkeys to the commands.

Continued development of DFHack would be impossible without its contributors and definitely isn't a one robot show. Check this out! Peterix started the project but has become relatively inactive so I've volunteered to take over managing the releases. It's open source so anyone can add changes and make their own releases.

Some command examples:
'reveal'     - reveals the map or portions of it.
'digFlood' - digs out a mineral vein as it is discovered without revealing the size
'prospect'   - counts available raw materials - mostly minerals.
'clean'      - removes nasty bloodstains and other such materials from the map, items and creatures.
'cleanowned' - removes ownership of claimed items, solving problems with worn clothing and military starving out the fort.
'stonesense' - an embedded version of the Stonesense isometric visualizer, ready for use.

And many more...

How to install DFHack:
  • First, get the archive meant for your system. Extract the contents into your DF folder.
  • On Windows, you're ready to use DFHack. An extra command line window should appear when you run DF.
  • On Linux, use the 'dfhack' script from a terminal to run DF with DFHack. If you have stonesense problems, you might have to get your own allegro 5 libraries and delete the ones in stonesense/deplibs.

How to uninstall DFHack:
  • Remove 'stonesense', 'hack' and 'dfusion' folders from your DF.
  • On Windows, remove SDL.dll and rename SDLreal.dll to SDL.dll
  • On Linux, remove the dfhack script.

Read the Readme for the full list of commands, their usage and installation instructions.

DFHack 0.43.03-r1 (Current):
Download Link

Currently Available Versions:
  • Linux (gcc 4.5.3)
  • Linux (gcc 4.8.1)
  • Windows
  • OSX (gcc 4.5.4)

What's New

Code: [Select]
This is a release for 0.43.03 (*not* 0.43.04, 0.43.05, or anything newer - support for those is in progress, but likely to take longer than usual, so we decided to make a release for 0.43.03 in the meantime). Please do let us know about any issues - we can always make another 0.43.03 release, even if support for newer versions isn't done.

Changes since 0.42.06:

Lua
---
- Label widgets can now easily register handlers for mouse clicks

New Features
------------
- `add-thought`: allow syndrome name as ``-thought`` argument
- `gui/gm-editor`

    - Added ability to insert default types into containers. For primitive types leave the type entry empty, and for references use ``*``.
    - Added ``shift-esc`` binding to fully exit from editor
    - Added ``gui/gm-editor toggle`` command to toggle editor visibility (saving position)

- `modtools/create-unit`:

    - Added an option to attach units to an existing wild animal population
    - Added an option to attach units to a map feature

Fixes
-----
- `autofarm`: Can now handle crops that grow for more than a season
- `combine-plants`: Fixed recursion into sub-containers
- `createitem`: Now moves multiple created items to cursor correctly
- `exportlegends`: Improved handling of unknown enum items (fixes many errors)
- `gui/create-item`: Fixed quality when creating multiple items
- `gui/mod-manager`: Fixed error when mods folder doesn't exist
- `modtools/item-trigger`: Fixed handling of items with subtypes
- `stockflow`:

    - Can order metal mechanisms
    - Fixed material category of thread-spinning jobs

Misc Improvements
-----------------
- The built-in ``ls`` command now wraps the descriptions of commands
- `catsplosion`: now a lua script instead of a plugin
- `fix/diplomats`: replaces ``fixdiplomats``
- `fix/merchants`: replaces ``fixmerchants``
- Unified script documentation and in-terminal help options

Removed
-------
- `tweak` manager-quantity: no longer needed

Bugs should be reported here: Issues Tracker

There's an IRC channel on freenode: #dfhack (irc://irc.freenode.net/#dfhack or web client)

The source code is available from github, please read the Compile document before building.

DFHack has many developers so we don't take donations. Donate generously to Toady instead! You can say it's in honor of DFHack if you want.

Full list of (old) downloadable versions can be found here: http://dethware.org/dfhack/download/

Previous Thread

7
Another plugin I've been meaning to write is something that monitors various useful information and presents it to the user at the end of each in-game year. There was a post on the suggestions forum somewhere about something like this, but I lost track of it. Basically it would be the stocks menu on steroids, reporting all sorts of useful/interesting statistics of what happened in the previous year.

The biggest one I can think of it keeping track of imports/creations/exports/destructions/consumptions of various items so you can keep track of how much food/drink/metal/clothing you use in a year and plan accordingly. Initially it'll probably just be a simple text file and won't actually present in-game unless I feel like overachieving. I might write a sort of "in-character" report based on the bookkeeper and fudge the numbers based on their skill, etc.

I'd love to hear suggestions on what would be useful to keep track of, or ideas about how it should be presented.

8
This is something I've been meaning to write for a long time. I'm posting to see how many people would be interested in using it. The idea is to make a "tower defense" mode for DF by triggering invasions more and more often until you're overwhelmed. Combined with digging invaders, it would guarantee that your fort eventually falls into ruin, unless you make a fort that diggingInvaders can't get through, which is difficult but possible. I haven't done it yet but I'm going to abandon the conditional tense because it's awkward and annoying. There's no easy way to control the size of invasions, but they tend to get bigger over time, and it's easy to trigger many invasions at the same time to ensure a difficult enough encounter.

As a modding tool, I'll also allow it to be highly configurable. Different civs can have independent settings. An optional upper bound on the frequency of invasions is reasonable. The rate of increase of invasion rate will of course be configurable. An initial wait time for new forts is also reasonable.

I think that a geometric distribution is a good way of doing it: an independent probability every tick of an invasion on that tick. That probability will of course be extremely small and increase only very very slowly, but steadily. I already know how to do it in a way that the script doesn't actually have to run every tick but it will be functionally the same, so framerates won't be slowed down much except by the invaders themselves. With a geometric distribution, the time of the previous invasion tells you nothing about the time of the next invasion: it could happen at any moment, but it probably won't.

I might make an optional separate script to tag invader items and remove them from the game when they die so that you don't get too much item clutter. Configurable to control the level of clutter acceptable, what items get deleted, maybe delete all invader items and create some generic "goblinite" tokens on top of their bodies instead, etc.

The main target demographic is the "game"ist crowd who want a challenge, so some degree of simulationism will have to be compromised. Would people use this? Any ideas for configuration options besides what I already mentioned?

9
I was originally going to make this a PM to Putnam, but it will affect raw modders also, so I'm making it public. Really it's to anyone who scans through raws to get extra information like autoSyndrome does with SYN_CLASSes, but I think that's just me and Putnam.



As DFHack modder interfaces get more numerous and complicated, it will get harder for modders to keep track of the naming conventions that signal data to scripts like itemsyndrome, autoSyndrome, syndromeTrigger, etc. The natural solution is to standardize the way that modders pass this extra information to DFHack. I think we should use XML. XML is inherently extensible, so scripters and dfhackers could easily design their own structure for tags that are relevant to whatever script/plugin they're writing without a new DFHack release. The DFHack parser will expose the parsed files as a tree of XML tags with a list of key/value arguments. All you'd have to do as a scripter is walk through the tree and extract the information you need instead of walking through raw files in your script.

Would you be willing to change the way itemsyndrome works to cooperate with this? So far (I think) it's only you and me that do this sort of thing, so if this is ever going to get done, now is the time. It's too hard to convince large numbers of people to change their stuff even if it's a better way of doing things. If we switch over now then we can keep it nice and standardized. Putting weird raw tags into the game is awkward at best from a design point of view anyway. I would greatly appreciate it if you'd be willing to switch over. If there's a better way of doing things, the sooner you switch over to it, the easier it will be and the less people will have to change their stuff.

I do think the old interface should be removed entirely, but I might be persuaded to leave it for a release or two to help the transition for modders. It would break backward compatibility, but only once and for the better in the long run. DF itself can change without regard to backward compatibility, so it comes with the territory.



TL;DR:

1. I'm going to make the XML parser. Would you be willing to use it the new format once I make a nice interface?

2. I could be persuaded to use a different format, but I really think XML is the way to go.

3. I could be persuaded to maintain backward compatibility, but this really is a much better way of doing things in the long run. It seems like a bad design to have two completely different ways of doing the same thing, especially if they might conflict.

10
Utilities and 3rd Party Applications / [DFHack] Planning: Item Wear
« on: May 07, 2014, 12:10:27 am »
No promises whatsoever on when I'll get it done, but if I have some time I think I'll do item wear next.

What do modders actually want to do with this? Just make armor/weapons/things wear down over time? Just specific items or everything? Is it good enough if they wear down unconditionally or do they have to wear down proportional to usage?

How would modders like the user interface to work? Ideally there should be succinct ways of making many item types work with a small number of commands, but also support just plain old "make this item and this item only decay over time". It would probably have to be at a per-mod dfhack.init file level rather than a raw level like autoSyndrome, but I'll see what I can do.

Obviously it would be difficult to balance and would take a lot of tinkering, but that's an inevitable problem and it's more of a modder problem than a dfhacker problem. You guys are better at that than I am.

12
This plugin makes it so that invaders can dig, remove buildings, and remove constructions in order to get to your dwarves. It still needs to be tested a lot more, but it seems to work well enough for now. Please tell me if there are any problems. Ideally, test it on as small a world as possible with a short history to minimize file size in case I need to see the save.

This is a beta. Please backup your saves before using, and regularly savescum as you use it. It seems to work but be careful.

Invaders will never dig unless they cannot path to any of your dwarves. If there's a path from the invaders to at least one of your dwarves, the plugin won't do anything until that is no longer the case. Otherwise, when there's a new invasion, the plugin runs a very complicated pathfinding algorithm from a selected invader to all of your dwarves. It then figures out what action is necessary, and assigns the job to the selected invader. This repeats until the invaders can path to one of your dwarves. By default, the job assigned is performed MUCH more slowly than the typical speed, so walling yourself off is a perfectly valid strategy if you think you can hold them off long enough for them to get bored and leave.

The plugin is highly configurable. You can set the pathfinding costs for walking, digging, removing buildings, removing "rough" constructions, and removing other constructions separately. Rough constructions are made from boulders. This makes it so that you can make invaders unlikely to dig if it is possible to reach your fort by only removing constructions and buildings, for example. You can also set the job delay for digging, removing buildings, and removing constructions. By default, the delay is 1000, which is probably too slow. The last time I checked, at just under 500 FPS, it took about a minute for them to dig out one tile. You can specify a set of races that are allowed to dig. Setting the cost of something to -1 disables it.

In order to prevent gruesome FPS death, you can specify the maximum number of edges per tick that the pathfinding algorithm will process. The default is 100. Setting it lower will make invaders take more in-game time to figure out how to dig to your dwarves, but will have less impact on FPS. Setting it higher does the opposite. Setting it to -1 removes the limit. You should set this to be as high as possible without noticeably lowering FPS.

There are still ways of making your fort uninvadable. The purpose of the plugin is to make the easiest ones less useful.


Known Limitations

There is currently no way of undigging the tiles that the invaders dig. I am open to suggestions of a fair way of doing this. I certainly don't want to create a way of repeatedly mining the same mineral veins indefinitely. To reduce the problem, increase the dig cost to something very high (1000000 should do, depending on the other costs) and ensure that there is a path to your dwarves that does not require any digging, or disable digging completely.

Ramps are extremely troublesome and made this plugin several times harder to write. Please test ramps thoroughly in combination with hatches, bridges, etc. I am not entirely certain they work.

Invaders do not properly avoid warm/wet stone. They will consider tiles that contain high water or any magma to be impassible, but they could accidentally trigger a flood.

Invaders do not attempt to avoid cave-ins. Fortunately, this rarely happens in practice. It is difficult to imagine a situation where invaders would cause a cave-in when the player did not deliberately design the fortress to make that happen.

Invaders do not build constructions or bridges. This means they cannot traverse empty space.

Invaders do not deconstruct bridges or unusable hatches. This is because deconstructing a hatch must be done from one tile over, and it's too complicated for now to make them possibly dig out one tile over specifically to be able to remove a hatch. Deconstructing a bridge is even worse, and could potentially even lead to an inconsistent invasion plan. Suppose that between point A and point B there's a bridge, and below part of the B side of the bridge is point C. They might decide to walk across the bridge, then deconstruct and dig down. This would cut off access to the rest of the invaders.

Invaders do not dig ramps, though they may use existing ones. If they could dig ramps, they might be able to get slightly shorter paths. It would also make the algorithm even more painfully complicated.

Invaders do not chop down trees. I have no intention of changing this.

Invaders do not have any way of draining liquids that may be in the way. If you have a fort submerged in water or magma, it is uninvadable.

All invaders use the same work costs for the distance metric, and all invaders have the same job delays. This can now be set separately.

If an invader is digging a tile, the tile will still flash in the same way as when one of your dwarves is digging. I don't know any easy way of fixing this.

Jobs assigned to invaders can be cancelled by the player. If this happens, they will just run the pathfinding algorithm again and probably reassign the same job. The job delay would start over in this case, so it's possible to cheat them into making no progress by repeatedly cancelling the jobs. I don't know a good way around this, but I consider it only a minor problem.

Invaders will only do one job at a time, even if multiple jobs could plausibly be done at the same time.

Invaders will only make a 1 tile wide path. Changing this would be massively difficult and would be of little value.

Every time invaders finish the most recent job, they start the pathfinding over again. This is because the state of the map may have changed while they were digging enough to change the most efficient path. It can also help reduce the issue that the distance metric does not perfectly measure the amount of work required.

If the state of the map changes sufficiently while computing pathfinding, then pathfinding will be started over. Cheating players can exploit this by having lots of strategically-placed repeater-powered doors and hatches that flip regularly. If the path that it computes is no longer a valid solution, pathfinding will start over. It does not have to remain the optimal path.

The pathfinding algorithm uses Dijkstra's algorithm, instead of A*. Any nontrivial admissible heuristic for A* would be too slow to compute due to the wide range of costs.

For a particular unit to be eligible, it must have at least one usable body part that can grasp, and all of its body parts that can grasp must be usable. Even if they have a hundred hands, chopping off even one makes them ineligible.

Invaders will not "cheat". They cannot, for example, deconstruct a building or construction from above or below.

Invaders are omniscient about the layout of the map, including unrevealed tiles. This is intentional. If they only knew about tiles they had already explored, they would end up digging much more.

Saving and loading will make pathfinding start over.


Download Link: http://dffd.wimbli.com/file.php?id=7748

This version of the plugin will ONLY work with DFHack version 0.34.11-r4. The link contains both the linux and the windows version of the plugin.

Type "help diggingInvaders" for exact usage.


Changelog:

0.6: Fixed a horrible game-crashing, save-corrupting bug. The bug only existed on windows, so linux users shouldn't panic, but maybe update just in case.
0.5: can set costs and delays for different races separately, and it differentiates between rough constructions (made from boulders) and smooth constructions (made from blocks or bars).
0.1: first release

13
DF Modding / [DFHack] Sky Eternal: Create more z-levels! (version 0.1)
« on: December 31, 2012, 03:38:38 pm »
This was a separate plugin for DFHack r2. It is merged into r3. Don't use this version anymore.






What it is

This plugin allows you to create new (sky) z-levels in fort mode, either on request, or as needed. The new z-levels will be empty. You will be able to construct things in them just fine. They work just like every other initially empty z-level.

If construction monitoring is enabled, then every time you make a new construction, it will ensure that you have at least two z-levels of head room. It keeps two z-levels instead of one so that you can keep constructing up/down stairs even at the top.


Requirements

Requires DFHack, version 0.34.11-r2. Later versions will probably work also.

Linux only for the moment. I can't compile a windows version for a few days.

Windows and Linux versions are available.

A Mac OS version may or may not be included in the next DFHack release.


Usage

Add the following line to dfhack.init to automatically enable the plugin:

Code: [Select]
skyEternal enable

To create a z-level, type "skyEternal" into the DFHack console. To create many z-levels at once, use "skyEternal [n]".

Type "help skyEternal" into the DFHack console for usage details.


Downloads

Download Link (Linux)

Download Link (Windows)


Installation

Un7zip the file and move it to your Dwarf Fortress/hack/plugins folder. If this folder doesn't exist, you haven't installed DFHack correctly.


Version History

0.1: Windows release. Same content, so same version number.

0.1: First release. Linux only.


Other

Please comment if there are any problems. I've tested it myself, and it works fine, but keep a savescum just in case.

STRIKE THE HEAVENS!

14
DF Dwarf Mode Discussion / Minecart Elevator
« on: August 19, 2012, 08:48:19 am »
Previous work:
http://www.bay12forums.com/smf/index.php?topic=72296
http://www.bay12forums.com/smf/index.php?topic=59894

I now have a method by which small volumes of magma may be transported via minecart. It requires lots and lots of tracks, and one screw pump. Zero if you're very careful and don't care that much about the efficiency.

PREVIOUS METHODS AND THEIR EFFICIENCY:

Code: [Select]
simple pump stack:
    throughput:
        up to 7/7 of magma per tick (much less in practice)
    framerate impact:
        terrible
    pumps required:
        one per z-level

enhanced pump stack:
    throughput:
        up to 7/7 of magma per tick (much less in practice)
    framerate impact:
        better than normal pump stack
    pumps required:
        one per z-level

magma piston:
    throughput:
        many tiles of magma moved in bulk (hard to measure magma per tick)
    framerate impact:
        moderate? virtually none except when cave-in happens
    pumps required:
        one?

I propose a design for magma transport using minecarts, without needing a magma waterfall.

The main idea is this: the minecart falls into two tiles of 7/7 magma. Suppose it enters from the west. The west tile is a N/E ramp. The east tile is an E/W ramp. The cart falls on the west tile, then slides back and forth between the west and east tiles until it makes it out and exits just north of the west tile. I have tested this and it works. The minecart had no initial velocity, and it worked regardless of the level of magma in the pool.

The reason has to do with partial tile progress. When the cart is on the west tile moving left, it makes partial progress northward, which accumulates. It does not go back down, because the cart doesn't move south. I'm not explaining this very well, but imagine the cart zig-zagging slowly northward and you'll get the picture. This can also be used to move a minecart (slowly) up z-levels without power or significant momentum.

If you don't mind glitching the game even harder, minecarts can be coerced (http://www.bay12forums.com/smf/index.php?topic=114394.msg3505011#msg3505011) to move at exactly 2.7 tiles per tick. A minecart can carry 2/7 of magma, so one minecart can carry up to 5.2 magma-level-z-levels per tick. Careful timing should allow multiple minecarts on the track at the same time. The slowest part of the track is the below magma part. I timed that part to take about 75 ticks. Round that up to 100 and you have a throughput of one cart every 100 ticks. One cart carrying 2/7 magma every 100 ticks means .02/7 magma per tick. Quite small throughput compared with a pump stack, but it could be easier to set up depending on your resources and how much magma you need and where you want it. Similar throughput to a bucket brigade.

Another advantage is that it doesn't leave magma "trails": normally if you want to transport magma horizontally, you pump it through a tunnel. This leaves lots of magma behind, which can make remodeling difficult.

I suspect this design can be improved for greater efficiency, but I'm not sure how.

15
DF General Discussion / DFStories.com
« on: August 11, 2012, 08:25:58 pm »
Is www.dfstories.com down for everyone else, too? There were some good ones there that I foolishly didn't save a copy of.

Pages: [1] 2 3 ... 5