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 - Nagidal

Pages: [1] 2 3 ... 6
1
DF Dwarf Mode Discussion / [Stress:] Tantruming Dwarf cursed by deity
« on: June 02, 2020, 01:00:28 am »
I have a unhappy dwarf who has been under a tremendous amount of stress for years, complaining about a lot of things, one of which was lack of decent meals (despite the fortress having a real smorgasbord of masterwork meals). When he threw a tantrum, he was looking for a fist fight. His victim, a recruit fled to the temple complex of Istrath, where the fight happened. The tantruming dwarf broke the recruit's arm and scratched his head open, tearing the eyelid.

Moments later the game paused and an ominous message appeared: Vucar Nekutkûbuk, Macedwarf has been cursed by Istrath!

So, now what? Is he a vampire or a werebeast? Should I kill him now? Wall him in? Can it be reversed?

Rant:
The fortress has about five more dwarves who often slip into depression, become oblivious or throw a tantrum. This might be the beginning of a tantrum spiral. I've never had these in 11 years playing DF, but it seems that stress might be a bit off balance in 47.04. I have temples, libraries, taverns, guildhalls, everyone has decent quarters, fine clothes, I give every soldier their favorite weapon, now I started to track pet preferences to see if I can buy some pets for the unhappy suckers. I don't know what else to do. This version is a bit ... experimental.


2
I read somewhere in this forum that a good safe method to collect webs only from certain defined areas may easily be accomplished by defining burrows and assigning either the workshop or the weaver to burrows, but I can't find it anymore. I think that it was possible to have some sort of discontinuous burrows where you could pretty much select individual web tiles which to collect. Can you help me on this?

I have breached into the first cavern layer which is full of cave spider silk webs. However, a web-slinging forgotten beast has come and lives there too. So far the FB has been living calmly on the other side of the cavern pool for the past two years and does not seem to care that my dwarves regularly hunt dralthas and troglodytes just across the pool. I want to prevent that on a warm sunny day Urist McWeaver gets the idea to explore some way to the other side of the pool and collect some forgotten beast webs.

3
DF Community Games & Stories / Steelpalace
« on: December 09, 2019, 09:48:26 am »
This is the story of Steelpalace, an ambitious military outpost of the Ink of Meteors.



"Here", pointed the queen to a location on a scroll of map of the far west. "In the Desert of Flames, in the Sorcerous land."



"That's in the middle of elf territory." I was surprised. As if we had not enough troubles here already.

"They are not our enemies," she replied.

"Nor our trade partners. What's our mission there?" I asked.

"Find us a new home. We are by far the smallest of all dwarven nations in this world. In the last 100 years, three of our major Fortresses have been destroyed by forgotten beasts. The numbers of goblins of the Hex of Strategies are growing. The last war with them has cost us our best soldiers and the life of my mother, the late queen Mistem Autumnhelm. Our current peace treaty might not last for much longer. I fear for the future of Ink of Meteors." The eyes in queen Meng Specialrings' worried face looked back at the X on the map, staring absently.

"Why there? The route is very difficult, across the polar desert. Will our caravaneers even make it?"

"They will try. Found a colony on the northern foothills between Jungles of Charity and the Rare Jungles. The mountains there are harsh but if our geologists are right, we might find just what we need so desperately." Meng's eyes narrowed as she was sliding her fingers down her beardless chin.

I raised my eyebrows as I started to understand. "You mean ..."

"Shush! Don't jinx it. But if you find it, give the place a name worthy of our new mountainhomes."

My expectations were high. A safe supply of steel is indeed crucial for the survival of Ink of Meteors. So is a good army. Filled with responsibility and pride I assumed the attention posture and saluted our queen. "I'll do my best!"


Further chapters of our story:

4
So I thought I'm in trouble being in a practically treeless embark, with no magma found when my glassmaker got moody. I hastily build a glass furnace. Before I could fell two last saguaros I was keeping as emergency wood source, he has claimed the furnace, got a piece of raw glass and a cloth (that's all he needed) and began a mysterious construction.

Isn't it a bug that he can make things in an unfuelled glass furnace?

5
Utilities and 3rd Party Applications / DFHack tree of the df global
« on: November 05, 2017, 10:11:42 am »
I am starting to learn about the Lua API to DFHack. Whenever a Lua script wants to access some information from the game, it finds it somewhere in the df global object.

What I don't quite understand is how do you know where to find which things. The structure of the df global object is defined in the df-structures xmls. (The way how this formal structure description works is laid out in the Data Structure Definition Syntax).

It seems to me that all top-level type definitions, no matter which one of the xmls they are mentioned in, are found directly under df.

Example1: df.units.xml mentions a top-level <struct-type type-name='unit_preference'>. The way to access this struct from the Lua API is df.unit_preference, rather than df.units.unit_preference

Example2: df.globals.xml mentions a top-level <enum-type type-name='weather_type' base-type='int8_t'>. The way to access this enum from the Lua API is df.weather_type, rather than df.globals.weather_type

So obviously, the the reason why you guys split the copious amounts of top-level types, objects or tables into different xml files is purely to keep those together, which are often used together? One such xml file with structure definition does not represent a certain node somewhere in the df object tree, right?

6
Utilities and 3rd Party Applications / What do I need to write this script:
« on: November 04, 2017, 09:52:11 am »
I am really interested in keeping detailed track of each dwarves' thoughts and preferences. (skills, body and soul attributespersonality traits, ...) I'd like to see which of them change over time, how often they change etc.

There is two things I want to achieve with this:

Goal 1. Sort of a personal file of each dwarf which would track the dwarves' development (take a daily record of his skills, attributes, traits). This would allow me to see how quickly do miners or pump operators grow muscles, how quickly each dwarf gains military skills, etc., use this data for a diachronic analysis. See how often things like worshipped deities, hair color, life ideals and behaviour, change - or if they are constant forever.

Goal 2. A Dwarf-Therapist-like spreadsheet overview of what kinds of pets, items, materials, food, drinks my dwarves like.
Example for pet preference: Obok and Tulon like dogs, Kib likes cows, Udib likes rabbits. Script would output a table like this:
Code: [Select]
PET NAME | NAME1           | NAME2            | NAME3
dog      | Obok Kûbukmamot | Tulon Orrunlikot |
cow      | Kib Tathtatled  |                  |
rabbit   | Udib Gutirurist |                  |


Here is a sketch of what I have in mind in a Python-like pseudo code (Python is currently the only language I can code in). Such script would probably have to run in the background parallel to the game:


Goal 1: A Dwarf's personal file recording his skill values
Code: [Select]
if calendarDateChanged():
    // dump the data about each dwarf into a file named like the dwarf
    for dwarf in fortressMembers:
        file = openFileInAppendMode(dwarf.name+".txt")
        print("Date:", calendar.currentDate(), file)
        print("Strength:", dwarf.strength.getValue(), file)
        print("Willpower:", dwarf.willpower.getValue(), file)
        // ... etc., dump all the info I want to keep track of piece by piece
        // it should probably be an XML dump instead, as I believe there are XML parsers ready to use.
        file.flush() // makes sure the print buffer is actually written into the file on the harddrive


And here is the sketch of the part which would serve to make a spreadsheet of the dwarves favourite pets, items, materials, food, etc.:

Goal 2: Spreadsheet of pets, items, materials, food, drinks which would list the names of dwarves who prefer it
Code: [Select]
// create a dictionary of pets, items, materials. In python a dictionary is an unordered list of (key,value) pairs, which can be evaluated: value = dictionary[key].
// example: pets[dog] would return a set of names of dwarves who like dogs
// initialize the dictionaries
pets = dict()
items = dict()
materials = dict()
for dwarf in fortressMembers:
    // if this dwarf's pet is already listed in the pet dictionary, just add the dwarf to the set of dwarves who like this pet
    try:
        pets[dwarf.favouritePet()].add(dwarf.name)
    // if this dwarf's pet is not yet in the pet dictionary, ...
    except keyError:
    // ... create a new dictionary entry for this pet
        // and assign this dictionary entry a set containing this dwarfs name (later more likeminded dwarves can be added to this set)
        pets[dwarf.favouritePet()] = set([dwarf.name])
    // same procedure for items
    try:
        items[dwarf.favouriteItem()].add(dwarf.name)
    except keyError:
        items[dwarf.favouriteItem()] = set([dwarf.name])
    // ... and materials
    try:
        materials[dwarf.favouriteMaterial()].add(dwarf.name)
    except keyError:
        materials[dwarf.favouriteMaterial()] = set([dwarf.name])

    // =====
    // obviously I would avoid copy-pasting the same procedure for pets, items and materials. I just wrote it down for easier readability.
    // I'd actually use something like this:
    // make tuples of dictionaries and dwarfs interests
    // dictionariesAndInterests = zip(list(pets, items, materials), list(dwarf.favouritePet(), dwarf.favouriteItem(), dwarf.favouriteMaterial())
    // for dictionayOfInterest, dwarfsFavourite in dictionariesAndInterests:
    //     try:
    //         dictionayOfInterest[dwarfsFavourite].add(dwarf.name)
    //     except keyError:
    //         dictionayOfInterest[dwarfsFavourite] = set([dwarf.name])
    // =====
// now dump the whole overview:
// heavily simplified
for dictionary in list(pets, items, materials):
    for key, value in dictionary:
        print(key, value)

If this can be done, can you introduce me to the structure of DF memory and the names of variables which bear the information I'd like to gather?

7
DF Gameplay Questions / Will smoothed Damp Ice Wall melt?
« on: October 31, 2017, 04:17:15 am »
I have accidentally dug into an aquifer during a cold or freezing season. The water running out of instantly froze and created a Damp Ice Wall. I know that If I smooth the aquifer walls, it will no longer leak, but sadly I can't reach the aquifer walls now since they are surrounded by Ice Walls. Will smoothing the Ice Walls prevent them from thawing?

Spoiler: image (click to show/hide)

8
DF General Discussion / Speedrunning Dwarf Fortress – Ideas
« on: October 28, 2017, 01:32:25 pm »
I'd like to hear your ideas about speedrunning Dwarf Fortress. We have a big player community, but I haven't seen any DF speedruns yet. I'm not a speedrunner myself, but I like to watch speedruns. Maybe there are more of you who would gravitate towards the speedrunning kind of playing DF. My idea of speedrunning DF would be speedrunning it measured by the in-game time, since it is fundementally a turn-based game.

Here is some speedrun goals I could come up with for the start, I'm sure you'll have some more to add.

Spoiler: Fortress Mode runs (click to show/hide)

Spoiler: Adventure Mode runs (click to show/hide)

Any other ideas? How would we best standardize measuring the run time? Is it possible to count the number of ticks (or steps) in a DFHack spript or somthing like that?

9
DF Gameplay Questions / Can't make quicklime
« on: October 24, 2017, 09:55:24 am »
I am trying to make quicklime at my magma kiln which is has a working magma heat source.

The task to make quicklime is highlighted red and is unselectable. It says it needs calcium carbonate, empty bag, and a fuel.
I have several empty bags in an unlinked bags stockpile, I have many marble stones in an unlined marble stockpile, and I have 10 bars of charcoal in a bin in an unlinked bars stockpile.

Any ideas what is still missing?

10
Can you help me design the advanced logic to operate a magma trap?

Mightymushroom has kindly suggested a magma trap design I want to try in my fortress. It goes like this:

Legend:

█ wall
+ or _ smooth floor
· open space
> downstairs
< upstairs

║ raising bridge

^ pressure plate
magma


View from the top:
(path to the fortress leads from the downstairs in the north to the upstairs in the south)

████████
·>+≈≈≈
·++≈≈≈
·++≈≈≈
·^^≈≈≈
·++≈≈≈
·++≈≈≈
·++≈≈≈
·++≈≈≈
·++≈≈≈
·<+≈≈≈
████████

(In reality the path from one end to another is over 20 tiles long and the pressure plates would be linked to three such bridges.)


View across z-levels from the side:

    █≈≈≈
    █≈≈≈
    █≈≈≈
    █≈≈≈
^^≈≈≈
█__ █
█ __█
█__ █


This is how I would like to operate the trap:

  • Dwarves pull a lever to ON, bridge is raised, magma tank can be filled, pressure plate trap is armed.
  • Goblin steps on either of the pressure plates. Pressure plate sends the trigger to lower the bridge (after 100 ticks).
  • Goblin steps off the pressure plate. The released pressure plate does not send any trigger to raise the bridge.
  • Any subsequent pressure plate depressions (by more goblins stepping on it before the bridge is lowered) do not interfere.
  • Bridge lowers, magma flows out and kills goblins. Any items accidentally lying on the pressure plate should not interfere.
     (Insufficient triggering weight)
  • Dwarves pull the lever to OFF, bridge remains lowered
  • Go to 1. (repeat cycle)

How would you design some logic to operate the trap like this? Or if you have any more convenient ideas, share them, too.

11
DF Gameplay Questions / Still can't brew, no empty food storages
« on: October 23, 2017, 01:21:56 am »
Please help me figure out why my still is not brewing.

When you open the savegame you will see a still right next to a Plants stockpile and a Rock Pots stockpile. These stockpiles aren't linked to anything, the still isn't linked to anything, yet the still says it needs an empty food storage to brew drinks.  :o

Why?

12
DF Dwarf Mode Discussion / Would df lose it's appeal ...?
« on: October 21, 2017, 09:47:29 am »
One of the viewers of my stream asked a very interesting question:

Would df lose it's appeal if you didn't have to "master" the graphics and the user interface? If it had 10 times the user base and everyone were playing it like civilization or the total war series?

I'd like to hear your answers.

13
DF Gameplay Questions / Hunting dog bitten by a werebeast
« on: October 17, 2017, 02:16:28 pm »
In a fight with a weremoose I read that the weremoose has bitten my huntig dog inthe lower body, tearing apart the muscle and tearing apart the left kidney.

Will this dog transform into a weremoose later?

14
I've encountered this announcement for the first time:

Spoiler (click to show/hide)

What does it mean? I don't even have a mayor yet. When the caravan came, the liason asked me for a suggestion who to appoint as a baron. I have suggested someone, but this guy was later killed by a forgotten beast while the liason was still present. Another dwarf assumed the position of the expedition leader. When the liason left, we've got this message.

What does it mean? Are we a barony without a baron now?

15
DF Dwarf Mode Discussion / Ideas for a magma trap on a magma pipe embark
« on: October 05, 2017, 02:17:59 pm »
With your help I have designed and built a moderately successful magma trap in my former Fortress Lancedbrains. It trapped invaders in a hallway, then dropped magma on them, and later water on top of it. Mined out, all worthless things gone in an instant, what remained was just the precious iron.


That was an embark with a shallow magma see deep underground. The problem with it was that it took several iterations of this trap to eliminate the whole siege. Usually only a handful of enemies could be trapped in the chamber of death at a time.

Now with a new fortress we embarked on a magma pipe which starts at the bottom of cavern layer 1 — not too far below three aquifer layers. Any ideas how I could use the generously high magma pipe to destroy a whole siege in one run?

I am trying to design a hallway of death, meandering vertically several z-levels from the bottom to the top. Sort of like a water pump stack does with water, this hallway would do with a long stream of enemies. The trick would of course be that instead of floor tiles, this hallway would have magma-safe grates. Once the marching siege parade is stacked and trapped several z-levels high, I'd drop some magma on them. The troops on the top would not be exposed to magma too long, but I figure they'd die from burning and having tissues melting away. Probably there would not be any casting into obsidian needed. I just need a way how to get rid of a river of magma quickly. Do you think I can drain it quickly if I'd lead it to the maps edge? perhaps having a steep ramp leading down to the map's edge to speed up the magma flow. Would the magma just disappear there like aquifer water does?

Pages: [1] 2 3 ... 6