Much thanks to you, DwarfEngineer, for taking up the task to keep this project updated. Much appreciated!Agreed. Just don't get burnt out. Do it on your time.
Do you mind 3rd party patches & contributions?
How do you compile it from source? Unless I'm doing something teminally wrong there's no makefile or anything in the repository...
just dropping by to have this in my "check for new replies" thingy :p
Do you mind 3rd party patches & contributions?I would welcome any patches / contributions. Especially if they are around open issues. Please let me know if you decide to work on something so we don't end up duplicating effort!
How do you compile it from source? Unless I'm doing something teminally wrong there's no makefile or anything in the repository...
If this is the place for feature requests, let me request improved handling of dwarf attributes. I'd really like to be able to sort by most creative / most agile, for example.I've updated Issue #266 (http://code.google.com/p/dwarftherapist/issues/detail?id=266) to include your request.
Feature requests:Opened issue #288 (http://code.google.com/p/dwarftherapist/issues/detail?id=288) to track this request.
-Make managing 'custom professions' easier.
--Saving/loading of custom profession sets
--Manage labors the same way as dwarves, (instead of having a list of check-marks, use the main layout)
--If you update the custom profession labors, reflect the changes in dwarves with that labor.
-Make all values editable (If you check the "enable cheats" box in settings) ?Do you have more details on this request? I haven't played with this feature yet. If you have a link to the previous discussion that would be good.
Do you perchance tend to hang out on IRC? I have a few questions about the project that I want to swing by someone that actually knows the code base well enough to get it to compile (still fighting with that myself).
To anyone just posting so that they get updates on the thread:Yeah I don't want an e-mail every time someone posts here, but I do want it to show up in my "new replies" window.
(http://jverkamp.com/temp/ClickHere.png)
If you have something to add or just to say good work, by all means go for it. But posting just to follow up the thread makes for a gigantic unweildy thread.
(/pet peeve)
Back on topic, I assume .14 support will be fairly easy. Just need to get the vectors, right?
Awesome, maybe I'll send over something once I get the layout figured out =PQuoteDo you mind 3rd party patches & contributions?I would welcome any patches / contributions. Especially if they are around open issues. Please let me know if you decide to work on something so we don't end up duplicating effort!
How do you compile it from source? Unless I'm doing something teminally wrong there's no makefile or anything in the repository...
I've created a wiki page (http://code.google.com/p/dwarftherapist/wiki/BuildingDwarfTherapist) for instructions on how to build Dwarf Therapist.
I can compile it fine using Ubuntu as follows:Spoiler (click to show/hide)
I can compile it fine using Ubuntu as follows:Spoiler (click to show/hide)
If you have any problems ask here and I may be around to solve them... now to work on getting some linux offsets for DF 31.14
EDIT: I have found some of the offsets, but not all of them:Spoiler (click to show/hide)
I can compile it fine using Ubuntu as follows:Spoiler (click to show/hide)
If you have any problems ask here and I may be around to solve them... now to work on getting some linux offsets for DF 31.14
EDIT: I have found some of the offsets, but not all of them:Spoiler (click to show/hide)
Any update on those linux offset?
I can compile it fine using Ubuntu as follows:Spoiler (click to show/hide)
If you have any problems ask here and I may be around to solve them... now to work on getting some linux offsets for DF 31.14
EDIT: I have found some of the offsets, but not all of them:Spoiler (click to show/hide)
Any update on those linux offset?
I second this.
What program do you use to find the offsets?
I just got a legendary blowgunner dwarf in a migration wave, but the column for bowman and blowgunner are reversed. Can't wait for the goblins to invade so I can get some darts!
HarrumphIs it just me or does anyone else have a hard time imagining someone actually saying/sounding that? :p
It's just you. I make that noise all the time. Of course, I'm an old fogey, so harumphing is just how I roll...HarrumphIs it just me or does anyone else have a hard time imagining someone actually saying/sounding that? :p
Harrumph, I really want the Linux version to work. My netbook runs the game about 3 times faster under ubuntu then windows. I really don't want to have to go into windows just for Therapist.
Quote-Make all values editable (If you check the "enable cheats" box in settings) ?Do you have more details on this request? I haven't played with this feature yet. If you have a link to the previous discussion that would be good.
Quote-Make all values editable (If you check the "enable cheats" box in settings) ?Do you have more details on this request? I haven't played with this feature yet. If you have a link to the previous discussion that would be good.
I meant all values as in skills, abilities, etc.
One can currently observe how much xp a dwarf has in a given skill, but it would be nice to be able to change it too.
Did you ever use companion for the older versions? That's the sort of functionality I would like.
http://code.google.com/p/dwarftherapist/wiki/VisionStatementQuote-Make all values editable (If you check the "enable cheats" box in settings) ?Do you have more details on this request? I haven't played with this feature yet. If you have a link to the previous discussion that would be good.
I meant all values as in skills, abilities, etc.
One can currently observe how much xp a dwarf has in a given skill, but it would be nice to be able to change it too.
Did you ever use companion for the older versions? That's the sort of functionality I would like.
Helps a lot especially since I realized you can right click to enable/disable all jobs of that type... until just an hour ago, I had been clicking off everything. xDDidn't know that, So I've been doing this wrong all this time?
Harrumph, I really want the Linux version to work. My netbook runs the game about 3 times faster under ubuntu then windows. I really don't want to have to go into windows just for Therapist.
go figure, I play under mac using wine for therapist
http://code.google.com/p/dwarftherapist/wiki/VisionStatement
Harrumph, I really want the Linux version to work. My netbook runs the game about 3 times faster under ubuntu then windows. I really don't want to have to go into windows just for Therapist.
go figure, I play under mac using wine for therapist
I've tried using wine for osx, but its REALLY slow and laggy :(
Cheers, Engineers.
This is my first time using Dwarf Therapist and my fort is already pretty big so I'm finding it kind of daunting. Why does it say I have 138 dwarfs when I have 134? Are 4 dwarfs pregnant?
I believe, in previous versions, at least, snatched children wouldn't disappear from DT, because they aren't marked as dead. No idea if this has been fixed or not.
[info]
checksum = 0x4ca869ea
version_name = v0.31.15 (graphics)
complete = true
[addresses]
translation_vector = 0x0169b124
language_vector = 0x0169b104
creature_vector = 0x01656fe0
dwarf_race_index = 0x01483874
Hey there folks! New version of DF was posted early this morning, October 3rd 2010.
Working on getting the new addresses, here's what I have so far.Seems like the creature_vector is the holdout again.
**EDIT** Aha! Used the creature_vector from 31.14, and managed to get dwarves read properly! Praise Armok!Code: [Select][info]
checksum = 0x4ca869ea
version_name = v0.31.15 (graphics)
complete = true
[addresses]
translation_vector = 0x0169b124
language_vector = 0x0169b104
creature_vector = 0x01656fe0
dwarf_race_index = 0x01483874
Everyone give this a shot, and let us all know how it goes!
Hey there folks! New version of DF was posted early this morning, October 3rd 2010.
Working on getting the new addresses, here's what I have so far.Seems like the creature_vector is the holdout again.
**EDIT** Aha! Used the creature_vector from 31.14, and managed to get dwarves read properly! Praise Armok!Code: [Select][info]
...
Everyone give this a shot, and let us all know how it goes!
New version posted. Looks like the only thing that changed was the checksums.
Everyone do what with the wherenow? And where is this new version?
I keep getting told that the file libQtScript.so.4 is missing (Linux version) it's also not in the archive, any hints which version I need?
linux-gate.so.1 => (0xf7762000)
libQtScript.so.4 => /usr/lib32/qt4/libQtScript.so.4 (0xf74c4000)
libQtGui.so.4 => /usr/lib32/qt4/libQtGui.so.4 (0xf6ab2000)
libQtNetwork.so.4 => /usr/lib32/qt4/libQtNetwork.so.4 (0xf6990000)
libQtCore.so.4 => /usr/lib32/qt4/libQtCore.so.4 (0xf6720000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf6707000)
libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.4/32/libstdc++.so.6 (0xf6610000)
libm.so.6 => /lib32/libm.so.6 (0xf65ea000)
libgcc_s.so.1 => /lib32/libgcc_s.so.1 (0xf65cd000)
libc.so.6 => /lib32/libc.so.6 (0xf6472000)
libglib-2.0.so.0 => /usr/lib32/libglib-2.0.so.0 (0xf638e000)
libpng14.so.14 => /usr/lib32/libpng14.so.14 (0xf6369000)
libz.so.1 => /lib32/libz.so.1 (0xf6356000)
libfreetype.so.6 => /usr/lib32/libfreetype.so.6 (0xf62d0000)
libEGL.so.1 => /usr/lib32/libEGL.so.1 (0xf62c1000)
libSM.so.6 => /usr/lib32/libSM.so.6 (0xf62b8000)
libICE.so.6 => /usr/lib32/libICE.so.6 (0xf629f000)
libXrender.so.1 => /usr/lib32/libXrender.so.1 (0xf6295000)
libXrandr.so.2 => /usr/lib32/libXrandr.so.2 (0xf628d000)
libXinerama.so.1 => /usr/lib32/libXinerama.so.1 (0xf6288000)
libfontconfig.so.1 => /usr/lib32/libfontconfig.so.1 (0xf6259000)
libXext.so.6 => /usr/lib32/libXext.so.6 (0xf624a000)
libX11.so.6 => /usr/lib32/libX11.so.6 (0xf612e000)
libgthread-2.0.so.0 => /usr/lib32/libgthread-2.0.so.0 (0xf6129000)
librt.so.1 => /lib32/librt.so.1 (0xf6120000)
libdl.so.2 => /lib32/libdl.so.2 (0xf611b000)
/lib/ld-linux.so.2 (0xf7746000)
libuuid.so.1 => /lib32/libuuid.so.1 (0xf6116000)
libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf60fc000)
libXau.so.6 => /usr/lib32/libXau.so.6 (0xf60f8000)
libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf60f2000)
libexpat.so.1 => /usr/lib32/libexpat.so.1 (0xf60c9000)
output of ldd:Code: [Select]snip
./bin/DwarfTherapist: symbol lookup error: ./bin/DwarfTherapist: undefined symbol: _ZN9QHashData14detach_helper2EPFvPNS_4NodeEPvEPFvS1_Eii
doesn't work sadly, "LD_LIBRARY_PATH=. ./bin/DwarfTherapist" gives me:Code: [Select]./bin/DwarfTherapist: symbol lookup error: ./bin/DwarfTherapist: undefined symbol: _ZN9QHashData14detach_helper2EPFvPNS_4NodeEPvEPFvS1_Eii
I'm working on installing VMWare server so I can try DT on other linux OSes.VirtualBox may be easier... Well, I think it is but YMMV.
Working on a new release, should have it before too long unless something major changed.
Dwarf Therapist 0.6.4 has been released (support for 31.16 added)
Random request: Can you put the version of DF supported in either the thread title or the first post? Would make it simpler to see if whatever version of DF is supported. :)Will do.
Version 0.6.4 shows "pikeman" skill for dwarves with lasher skill.
If it helps you any, it shows the correct skills in the tooltip but marks the wrong columns. Definately for Lasher, Bowman and Pikeman. Dunno about Bowyer or Thrower.Uh oh. That means the gridview that ships is broken. It won't be enough to just fix the game data ini file.
If it helps you any, it shows the correct skills in the tooltip but marks the wrong columns. Definately for Lasher, Bowman and Pikeman. Dunno about Bowyer or Thrower.Uh oh. That means the gridview that ships is broken. It won't be enough to just fix the game data ini file.
I'm having some weird annoying behavior with Therapist. It seems that whenever I use it, I get something corrupted and the game crashes after a while. If I save, it will crash during the saving process, so the save also gets corrupted. I'm trying to find out what exactly causes the crash right now. I think it has something to do with editing the "crafts" section, but I might be wrong.
I'll keep looking into it and report. Running on Linux 31.16, Therapist 0.6.4.
The copy of DT I compiled myself works great for me under Linux kernel version 2.6.32-25 (generic, 32-bit, the copy in the Dwarf Therapist ALPHA_R445 package gives me a symbol lookup error when I start it up, but that's probably a different problem). Linux 2.6.35-22, on the other hand, won't allow DT to attach to DF. (I can re-run it once I reboot back into the newer kernel and post the log file.) I'm guessing it's probably a security feature of the newer kernel.
Anybody know how I get DF and DT talking to each other without having to use the old kernel?
sudo sysctl -w kernel.randomize_va_space=0
The save one is a known bug. Try it without Therapist and see what happens.
Code: [Select]sudo sysctl -w kernel.randomize_va_space=0
I'll assume you use Ubuntu 10.10 and their fail-patched kernels (from my point of view anyway).Code: [Select]sudo sysctl -w kernel.randomize_va_space=0
Durn... I thought I might have an answer already, but that didn't seem to work.
When I start DT (even after using the above command), or click the connect button from within DT, the line "ptrace attach: Operation not permitted" is printed to the terminal from which I start DT.
Here's the contents of the log file:Spoiler (click to show/hide)
Does kind of look like that should've worked.
Like I said, it works if I boot to the 2.6.32 kernel, but I like having the hardware sensor compatibility of the new kernel.
So... is no one else having this issue?
sex = 0x00F8
sex = 0x00FA
I'll assume you use Ubuntu 10.10 and their fail-patched kernels (from my point of view anyway).
Read this:
https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#ptrace%20Protection (https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#ptrace%20Protection)
Same applies to DFHack of course, because the methods used are the same.
The copy of DT I compiled myself works great for me under Linux kernel version 2.6.32-25 (generic, 32-bit, the copy in the Dwarf Therapist ALPHA_R445 package gives me a symbol lookup error when I start it up, but that's probably a different problem). Linux 2.6.35-22, on the other hand, won't allow DT to attach to DF. (I can re-run it once I reboot back into the newer kernel and post the log file.) I'm guessing it's probably a security feature of the newer kernel.
Anybody know how I get DF and DT talking to each other without having to use the old kernel?
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
does this version support the old 40d18? which is the more recent that support that df build?
Since you all have the know how, any way to get a Military Therapist utility? I'm looking for something that manages all of the aspects setting up squads. From individual equipment layout to quick alert setup.
Ok, I know this is only in my mind, but it's been bugging me for a really long time now... :-\Why should the world cater to your psychosis? ;D
Every time I see the headline "Dwarf therapist" I read, "Dwarf The Rapist"... shouldn't the name be Dwarven therapist, that way it's grammatically wrong to say "dwarven the rapist"...
cp COPYRIGHT /path/dwarftherapist/debian/dwarftherapist/usr/share/doc/dwarftherapist/copyright; cp README /path/dwarftherapist/debian/dwarftherapist/usr/share/doc/dwarftherapist/README.Debian
cp: cannot stat `COPYRIGHT': No such file or directory
cp: cannot stat `README': No such file or directory
make[1]: *** [install_doc] Error 1
make[1]: Leaving directory `/path/dwarftherapist'
make: *** [install] Error 2
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
Debian package doesn't build on Debian Sid:Code: [Select]cp COPYRIGHT /path/dwarftherapist/debian/dwarftherapist/usr/share/doc/dwarftherapist/copyright; cp README /path/dwarftherapist/debian/dwarftherapist/usr/share/doc/dwarftherapist/README.Debian
cp: cannot stat `COPYRIGHT': No such file or directory
cp: cannot stat `README': No such file or directory
make[1]: *** [install_doc] Error 1
make[1]: Leaving directory `/path/dwarftherapist'
make: *** [install] Error 2
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
Also worth noting that Dwarf Therapist doesn't need gksu on Debian Sid as Debian hasn't implemented ptrace hardening.
I've been running 0.6.5, and a few of the offsets are wrong - for example, dwarves are all listed as "No Job" because the job offset is off by a few bytes. I've fixed most of them in my own copy, but I don't have access to it at the moment (said copy is at home, and I'm at work) - I'll post the corrections later today.
Are you building the package from source, or just repackaging for debian?
As far as gksu, the script that launches DT checks for the ptrace hardening before launching with gksu, so if it's not enabled, it should run as a normal user.
Are you building the package from source, or just repackaging for debian?
As far as gksu, the script that launches DT checks for the ptrace hardening before launching with gksu, so if it's not enabled, it should run as a normal user.
I'm trying to package for Debian, for personal use, I'm not a maintainer. Frankly, I have no idea what I'm doing. I'm by no means a developer, but I write a mean Hello World. In Ruby :'(
I just added the Lucid Dwarf Therapist repository to my source list, but nothing shows up when I refresh the Update Manager. Has anyone else had this problem?
sudo apt-get update
sudo apt-get install dwarftherapist
If that doesn't work, please send me the output in a PM.
Are you using 64-bit OS by any chance?
Try adding this repository:
deb http://dwarftherapist.com/apt sid universe
We'll see if my package building strategy is going to work for multiple distros :)
As sensationalist as it sounds... it is kind of like giving the app seriously_screw_up_your_system_Windows_like_access, so it's not to be taken lightly. ;)
As sensationalist as it sounds... it is kind of like giving the app seriously_screw_up_your_system_Windows_like_access, so it's not to be taken lightly. ;)
The package could have literally anything in the postinst/prerm scripts, both of which are run as root, so it isn't really sensationalist at all.
Am also curious on this.Are you using 64-bit OS by any chance?Is the repos only have a 32-bit install then?
Yeah... that's what I said...As sensationalist as it sounds... it is kind of like giving the app seriously_screw_up_your_system_Windows_like_access, so it's not to be taken lightly. ;)
The package could have literally anything in the postinst/prerm scripts, both of which are run as root, so it isn't really sensationalist at all.
Yeah... that's what I said...Yeah... That's what I agreed to...
Is the repos only have a 32-bit install then?Am also curious on this.
Is there a version of Therapist in the works/done for DF 0.31.18?I expected it to take longer for this to be asked. New memory layouts are always in the works. No exceptions.
Is there a version of Therapist in the works/done for DF 0.31.18?
Is there a version of Therapist in the works/done for DF 0.31.18?
Yes there is, and it has support for sorting by squad!Spoiler (click to show/hide)
Any plans to support military? Such as a uniform and schedule editor?I would love to, but it will be one step at a time. Just getting squad names for dwarves took quite a bit of effort.
Just posted the new version of Dwarf Therapist 0.6.6 for Windows. Linux packages to follow shortly.
Changelog:Spoiler (click to show/hide)
sudo apt-get update
sudo apt-get upgrade
Yes but when it's a known source and known application, it can be construed as severe overreaction on the computer's part and, thus, amusing.As sensationalist as it sounds... it is kind of like giving the app seriously_screw_up_your_system_Windows_like_access, so it's not to be taken lightly. ;)
The package could have literally anything in the postinst/prerm scripts, both of which are run as root, so it isn't really sensationalist at all.
Getting a new computer soon, and I'm going to run Fedora on it. Any chance I can get this on Fedora, or will I just have to run it through Wine?
Just downloaded and ran Dwarf Therapist... and just got a weird bug, where some of my dwarves aren't showing up. My fort has 49 dwarves, but DT will only display 48 or 47, and every time I close it and run it again, different dwarves are missing from the list. I imported my save file from 31.17, maybe that's the problem?I think it may be that the flag for haunting spirits is off. Check your run.log, if it mentions ignoring a dwarf because it appears to be a haunting spirit, change this in your memory layout:
Just downloaded and ran Dwarf Therapist... and just got a weird bug, where some of my dwarves aren't showing up. My fort has 49 dwarves, but DT will only display 48 or 47, and every time I close it and run it again, different dwarves are missing from the list. I imported my save file from 31.17, maybe that's the problem?I think it may be that the flag for haunting spirits is off. Check your run.log, if it mentions ignoring a dwarf because it appears to be a haunting spirit, change this in your memory layout:Spoiler (click to show/hide)
Ghosts will show up, but at least you'll have all of your live dwarfs. I haven't killed enough dwarves off to have reliably determined what the flag for ghost is. Guess I was off :)
Hi, I am new to both Ubuntu (10.10) and Dwarf Fortress (31.18). When I click on the link on http://code.google.com/p/dwarftherapist/wiki/LinuxVersion for the Maverick version of Dwarf Therapist, it takes me to a 403 Forbidden page. What am I doing wrong?
deb http://dwarftherapist.com/apt maverick universe
Hit the "Add Source" button. Close the window and open up Synaptic, hit the "Reload" button then do a search for dwarftherapist. Mark it off for installation and hit "Apply". Once it's done, you'll have a Dwarf Therapist icon in Applications -> Accessories.
Where might I begin troubleshooting this issue?
Whenever I commit a change from Dwarf Therapist the next time the game attempts to save it seg faults. I'm on Linux and compiled DT myself. It works flawlessly except for this. The changes I make to professions do take effect in the game, but it renders the game unsavable from that time forward it seems.
Hey. I have the same problem as him; the game crashes during save time if I use the rapist. I tried several jobs as you suggested, but it crashes with all.
I'm on Ubuntu 10.10, but I'm on a 64bit machine. Also compiled the program from the source.
I don't have any problems changing jobs and saving. I have compiled from source and is running 32 bit arch linux.
I don't have any problems changing jobs and saving. I have compiled from source and is running 32 bit arch linux.
Then maybe the issue is the fact that we are using a 64 bit software on a 32 bit software?
So is a Mac version being created... and if not, can I find a way to *cheat* by using this on my Mac?
Thanks if you can help :)
Hmm, thanks alot.Yeah I'm pretty sure snatched babies won't show up
Still I only have 75 Dwarfs on Therapist, but in the game my population is 76, what else is not in Therapist?
Could it be a kidnapped baby? Thats all I can make out from the run.log.
http://code.google.com/p/dwarftherapist/issues/detail?id=305I'm looking into the actual flag for haunting spirits. I've currently cut off my fort from water; looking for creative ways to kill off some dwarves. For SCIENCE!
Is anyone looking in to this?
I wish I could, but I have no knowledge of coding etc.
Its about missing dwarfs.
Yea but would snatched babies still show up on the z menu at population?Hmm, thanks alot.Yeah I'm pretty sure snatched babies won't show up
Still I only have 75 Dwarfs on Therapist, but in the game my population is 76, what else is not in Therapist?
Could it be a kidnapped baby? Thats all I can make out from the run.log.
http://code.google.com/p/dwarftherapist/issues/detail?id=305I'm looking into the actual flag for haunting spirits. I've currently cut off my fort from water; looking for creative ways to kill off some dwarves. For SCIENCE!
Is anyone looking in to this?
I wish I could, but I have no knowledge of coding etc.
Its about missing dwarfs.
a moment, before you rush into 64-bit mode hell, can a 64-bit app even access memory of a 32-bit app that DF is by itself?I'm running 64 bit and it works fine. I've had a 64 bit system for years without trouble.
this is not about a 64-bit OS running 32-bit apps. its about a 64-bit app accessing and modifying a 32-bit app's memory space dammit.I use therapist and several other DF memory modifying applications on my 64 bit system.
this is not about a 64-bit OS running 32-bit apps. its about a 64-bit app accessing and modifying a 32-bit app's memory space dammit.It doesn't matter. DT looks in the memory for specific lengths at specific addresses. The 32-bit app modifies the memory it's given based on it's 32-bit programming. Moving up to a 64-bit OS has no bearing on those two specific variables except that it can address a higher number of these. Running a 32-bit app on 64-bit has no real downside.
I know that LOL can be interpreted as "Laughing Out Loud" or "Lots Of Laughs," but can someone explain to me what "OLOLOLOL" means?
Which is actually 14913080 in the octal base.I know that LOL can be interpreted as "Laughing Out Loud" or "Lots Of Laughs," but can someone explain to me what "OLOLOLOL" means?
it's 70707070 backward, duh.
Sometimes I wonder if its the game or these forums that are crazier.Define crazy....
Which is actually 14913080 in the octal base.I know that LOL can be interpreted as "Laughing Out Loud" or "Lots Of Laughs," but can someone explain to me what "OLOLOLOL" means?
it's 70707070 backward, duh.
Now, if we split it into double digits we get 14 91 30 80.
If we use base 26 modulus we get the following: 14 13 4 1. Now we transform (0-25->1-26): 15 14 5 2 and what we get is ONEC. As 70707070 is the rotated OLOLOLOL, we have to rotate it back and we receive CENO. It is a known fact that "cēnō" is "I dine" in Latin. Which only leaves one choice: glopso is a rapist cannibal bent on world domination.
MYSTERY SOLVED
Which is actually 14913080 in the octal base.I know that LOL can be interpreted as "Laughing Out Loud" or "Lots Of Laughs," but can someone explain to me what "OLOLOLOL" means?
it's 70707070 backward, duh.
Now, if we split it into double digits we get 14 91 30 80.
If we use base 26 modulus we get the following: 14 13 4 1. Now we transform (0-25->1-26): 15 14 5 2 and what we get is ONEC. As 70707070 is the rotated OLOLOLOL, we have to rotate it back and we receive CENO. It is a known fact that "cēnō" is "I dine" in Latin. Which only leaves one choice: glopso is a rapist cannibal bent on world domination.
MYSTERY SOLVED
... I have to know. How long did that take to work out?
Hello there, i have a lil' issue with the program: it does not load all the dorfs. I push The "read dwarfs button" it shows me only 2 dwarfs, i push it again and again and the quantity of shown dorfs is allways different. I never managed to make it show all 7 starting dorfs. All this started at .18 version. Any ideas how to fix that? Therapist version 0.6.6.Yeah, the more I'm using DT with this version the more broken it seems, missing dwarves, some dwarves can't be assigned labors, etc etc.
erm... math nerd conspiracy theorist-ish person?Which is actually 14913080 in the octal base.I know that LOL can be interpreted as "Laughing Out Loud" or "Lots Of Laughs," but can someone explain to me what "OLOLOLOL" means?
it's 70707070 backward, duh.
Now, if we split it into double digits we get 14 91 30 80.
If we use base 26 modulus we get the following: 14 13 4 1. Now we transform (0-25->1-26): 15 14 5 2 and what we get is ONEC. As 70707070 is the rotated OLOLOLOL, we have to rotate it back and we receive CENO. It is a known fact that "cēnō" is "I dine" in Latin. Which only leaves one choice: glopso is a rapist cannibal bent on world domination.
MYSTERY SOLVED
... I have to know. How long did that take to work out?
t=87.971928[sec]±7E-6[sec]
Just put up a 0.6.7 windows version (http://dwarftherapist.googlecode.com/files/DwarfTherapist-0.6.7.zip). This should fix the ghosts/haunting spirit issue. I'm going to wait for a few people to test before I make this the official release next week.
Just put up a 0.6.7 windows version (http://dwarftherapist.googlecode.com/files/DwarfTherapist-0.6.7.zip). This should fix the ghosts/haunting spirit issue. I'm going to wait for a few people to test before I make this the official release next week.
Might this fix the problem with Linux and the game crashing on save after DT changes have been commited?
erm... math nerd conspiracy theorist-ish person?Which is actually 14913080 in the octal base.I know that LOL can be interpreted as "Laughing Out Loud" or "Lots Of Laughs," but can someone explain to me what "OLOLOLOL" means?
it's 70707070 backward, duh.
Now, if we split it into double digits we get 14 91 30 80.
If we use base 26 modulus we get the following: 14 13 4 1. Now we transform (0-25->1-26): 15 14 5 2 and what we get is ONEC. As 70707070 is the rotated OLOLOLOL, we have to rotate it back and we receive CENO. It is a known fact that "cēnō" is "I dine" in Latin. Which only leaves one choice: glopso is a rapist cannibal bent on world domination.
MYSTERY SOLVED
... I have to know. How long did that take to work out?
t=87.971928[sec]±7E-6[sec]
erm... math nerd conspiracy theorist-ish person?Which is actually 14913080 in the octal base.I know that LOL can be interpreted as "Laughing Out Loud" or "Lots Of Laughs," but can someone explain to me what "OLOLOLOL" means?
it's 70707070 backward, duh.
Now, if we split it into double digits we get 14 91 30 80.
If we use base 26 modulus we get the following: 14 13 4 1. Now we transform (0-25->1-26): 15 14 5 2 and what we get is ONEC. As 70707070 is the rotated OLOLOLOL, we have to rotate it back and we receive CENO. It is a known fact that "cēnō" is "I dine" in Latin. Which only leaves one choice: glopso is a rapist cannibal bent on world domination.
MYSTERY SOLVED
... I have to know. How long did that take to work out?
t=87.971928[sec]±7E-6[sec]
Please, the ± sign should indicate I'm just a physics student who recently finished reading Cryptonomicon. It's pretty clear from where I stand!
erm... math nerd conspiracy theorist-ish person?Which is actually 14913080 in the octal base.I know that LOL can be interpreted as "Laughing Out Loud" or "Lots Of Laughs," but can someone explain to me what "OLOLOLOL" means?
it's 70707070 backward, duh.
Now, if we split it into double digits we get 14 91 30 80.
If we use base 26 modulus we get the following: 14 13 4 1. Now we transform (0-25->1-26): 15 14 5 2 and what we get is ONEC. As 70707070 is the rotated OLOLOLOL, we have to rotate it back and we receive CENO. It is a known fact that "cēnō" is "I dine" in Latin. Which only leaves one choice: glopso is a rapist cannibal bent on world domination.
MYSTERY SOLVED
... I have to know. How long did that take to work out?
t=87.971928[sec]±7E-6[sec]
Please, the ± sign should indicate I'm just a physics student who recently finished reading Cryptonomicon. It's pretty clear from where I stand!
I was leaning toward math myself due the use of a non SI approved time unit. There are not the good physics students of the olds, I guess.
erm... math nerd conspiracy theorist-ish person?Which is actually 14913080 in the octal base.I know that LOL can be interpreted as "Laughing Out Loud" or "Lots Of Laughs," but can someone explain to me what "OLOLOLOL" means?
it's 70707070 backward, duh.
Now, if we split it into double digits we get 14 91 30 80.
If we use base 26 modulus we get the following: 14 13 4 1. Now we transform (0-25->1-26): 15 14 5 2 and what we get is ONEC. As 70707070 is the rotated OLOLOLOL, we have to rotate it back and we receive CENO. It is a known fact that "cēnō" is "I dine" in Latin. Which only leaves one choice: glopso is a rapist cannibal bent on world domination.
MYSTERY SOLVED
... I have to know. How long did that take to work out?
t=87.971928[sec]±7E-6[sec]
Please, the ± sign should indicate I'm just a physics student who recently finished reading Cryptonomicon. It's pretty clear from where I stand!
I was leaning toward math myself due the use of a non SI approved time unit. There are not the good physics students of the olds, I guess.
I'll admit I have a scar of the cgs way, but since when are seconds not SI approved?
I have a bug where only 3 of my dwarves are showing up after I open it after embarking...Did you download the latest version, which was made available on the previous page?
The only change I have made is make my dwarves have Speed:1 tag...
./bin/DwarfTherapist: symbol lookup error: ./bin/DwarfTherapist: undefined symbol: _ZN9QHashData14detach_helper2EPFvPNS_4NodeEPvEPFvS1_Eii
"unable to identify version from checksum:" "0x884f794d" [src/dfinstance.cpp:672] (get_memory_layout)
The number of dwarves I have is changing randomly. Sometimes I have the full 19, sometimes I lose two dwarves to 17.Same issue with 0.6.7 tho it's more accurate with less dorfs. Swinging heavily 39-44 dwarves here. Never recognize full 45.
Using 0.6.6, but I'll try downloading the test version 0.6.7
The number of dwarves I have is changing randomly. Sometimes I have the full 19, sometimes I lose two dwarves to 17.
Using 0.6.6, but I'll try downloading the test version 0.6.7
I'm sorry but I don't know how to talk to this version of Dwarf Fortress! (checksum:0x884f794d)
Sorry, I also do not know how to speak Dee-ef-ian.Code: [Select]I'm sorry but I don't know how to talk to this version of Dwarf Fortress! (checksum:0x884f794d)
... anyone?
Code: [Select]I'm sorry but I don't know how to talk to this version of Dwarf Fortress! (checksum:0x884f794d)
... anyone?
Code: [Select]I'm sorry but I don't know how to talk to this version of Dwarf Fortress! (checksum:0x884f794d)
... anyone?
You forgot to copy the memory location file. In short, DT is missing an ini file that tells it where is what.
Check the 'etc' directory within the DT source directory. You should be able to find the proper .ini file there.
Hrm. I can't seem to download the file for Linux. I apparently don't have permission to access the directory, and then there's a 404 when ErrorDocument handles the request.
It makes Dwarf fortress playable. It's that good.
Just wanted to start off with props to chmod and DwarfEngineer. I really love this utility and I find the game nearly unplayable without it since I discovered it. Just one question and sorry if it has been asked before. In the future will it be able to properly show castes? Or at least be able to properly show the gender of races with multiple castes? I play with Deon's Genesis and it just seems to pick a random gender. Caste would be nice but gender is important since I only allow males in my military and it would be nice to tell who is what at a glance.
Quick Question: Does DwarfTherapist work with this mod? I can't imagine why it wouldn't but I think I heard it once.It does, it just doesn't show gender properly. The displayed gender is seemingly random due to castes.
It can read a dwarf's traits, but only the ones that are useless! Agility, strength, endurance, recuperation, toughness, kinesthetic sense, spatial sense, willpower, etc. are not listed
Makes my OCD sad.
Try posting about it in the Dwarf Therapist thread or even the Dwarf Therapist forums.
On a side note I agree.
this may just be me but i use dwarf therapist with dwarf fortress and it cant read ure genders right ive never had tbhis issue before and ive played vanilla and civilization mod and it was always right before but now it says i got 1 man and 6 women and in game when i check ive got 3 men and 4 women ive tried a fresh instal of dwarf therapist and tried restarting it and reloading it a few times as well any ideas and yes im not stupud i know this isnt the dwarf therapist forum.....That's a problem with how Dwarf Therapist responds to castes. I've brought this up on the DT thread an was thoroughly ignored but you could try as well.
erm hello so ive been using this mod for a few months now loved it and DF is unplayable with out it ive used it on vanilla and civilization mod and its perfect but just today i wanted somthing different so i tried the genesis mod and while playing dwarf fortress told me i had 1 guy and 6 women and when i checked in game i had 3 men and 4 women and the person it said was male was a women. so was wondering if there is any way to fix this? or a work around for this or a planned update to fix this or if thats even possible? sry for the run on
Gem windows aren't showing up for me correctly.
I got stonesense working by replacing the memory XML in the old stonesense with the one from DFhack, would that be the issue? They just look like empty frames.
I know creatures don't show up via memory XML replacement, but I wasn't sure about windows.
generally, unless it's stated otherwise, just assume that the xml isn't complete yet.
Installed, it pops up with a graphics error of some sort? Is this because i'm using a tileset?No, using a tileset won't change how Dwarf Fortress uses its memory. Please be more specific about the error. Copy and paste what pops up or provide a core dump if you know how.
No offense, but is DwarfEngineer or anyone who is in a position to address this aware of this? I do realize that Dwarf Therapist is a very popular tool and this thread gets frequent posts from users with issues and concerns. So, it's not surprising when a message or two gets buried under new posts. But, IMO, it would help immensely if it was acknowledged with something like, "we are aware of the problem" or even "sorry, but I'm afraid this can not be fixed."
<snip image>
Thats my error, help please? :)
Code: [Select]I'm sorry but I don't know how to talk to this version of Dwarf Fortress! (checksum:0x884f794d)
... anyone?
You forgot to copy the memory location file. In short, DT is missing an ini file that tells it where is what.
Check the 'etc' directory within the DT source directory. You should be able to find the proper .ini file there.
so what do I do exaclty? :/ sorry :L
Hi, I'm using 64-bit Ubuntu 10.10 and I can't add the source to the synaptic, when I hit the reload button it says that it was unable to fetch http://dwarftherapist.com/apt/ etc etc etc unable to connect to dwarftherapist.com:http:
any help would be appreciated.
http://www.bay12forums.com/smf/index.php?topic=66525.msg1730487#msg1730487Hi, I'm using 64-bit Ubuntu 10.10 and I can't add the source to the synaptic, when I hit the reload button it says that it was unable to fetch http://dwarftherapist.com/apt/ etc etc etc unable to connect to dwarftherapist.com:http:Same thing here. It would seem the repository is down or protected or something.
any help would be appreciated.
http://www.bay12forums.com/smf/index.php?topic=66525.msg1730487#msg1730487Hi, I'm using 64-bit Ubuntu 10.10 and I can't add the source to the synaptic, when I hit the reload button it says that it was unable to fetch http://dwarftherapist.com/apt/ etc etc etc unable to connect to dwarftherapist.com:http:Same thing here. It would seem the repository is down or protected or something.
any help would be appreciated.
http://www.bay12forums.com/smf/index.php?topic=66525.msg1730487#msg1730487Hi, I'm using 64-bit Ubuntu 10.10 and I can't add the source to the synaptic, when I hit the reload button it says that it was unable to fetch http://dwarftherapist.com/apt/ etc etc etc unable to connect to dwarftherapist.com:http:Same thing here. It would seem the repository is down or protected or something.
any help would be appreciated.
No, have already done that, but as the guy below me said, it looks as if the repository is down.
I would like very much to have different icon for "On break" than for "Idle". My OCD screams "nolazy bum freeloadersidlers!". Thankyouverymuch.
Why oh why is the following being ignored?
I tried to install via apt-get. I added the source, typed out the command and got:I think what it's saying is that Dwarf Therapist requires version 4.7.0 of libqtcore, while the one in the ubuntu 10.04 repos are only 4.6.2. If this is right DwarfEngineer is probably using Ubuntu 10.10. Not sure what you can do about this. My first reaction is to compile DT myself.
The following packages have unmet dependencies:
dwarftherapist: Depends: libqtcore4 (>= 4:4.7.0~beta1) but 4:4.6.2-0ubuntu5.1 is to be installed
E: Broken packages
Ubuntu is telling me that version is exactly the one I already have installed, so I'm not sure what's going on there.
I also tried running an alpha version I found previously in this thread. That was DwarfTherapist_LINUX_ALPHA_R444.5. When I run that a terminal pops up, shows an error message too fast for me to see and closes.Try running it from a terminal and you should probably see the error messages there.
Could not open logfile for writing! "No such file or directory"
ptrace attach: Operation not permitted
(<unknown>:3142): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject'
(<unknown>:3142): GLib-GObject-CRITICAL **: g_object_get_data: assertion `G_IS_OBJECT (object)' failed
victor@victor-laptop:~$ DwarfTherapist
Could not open logfile for writing! "No such file or directory"
ptrace attach: Operation not permitted
(<unknown>:3178): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GObject'
(<unknown>:3178): GLib-GObject-CRITICAL **: g_object_get_data: assertion `G_IS_OBJECT (object)' failed
Could not open logfile for writing! "No such file or directory"
ptrace attach: Operation not permitted
How are people downloading the latest DT Linux version? I can't get dwarftherapist.com to resolve in the browser or as a repository. It just 404s.
I don't see an option for swimming skill anywhere. Is it not tracked, or am I just missing something?
So any idea on how to get DT working on non-Ubuntu Linux? Would be VERY helpful. Linux noob here so try not to sound too guru-ish if you can. ;D
I am very new to Linux.
I am running Debian 5.0.7
while trying to build DT I ran all of these commands per instructions:and this is what I get when I run make:Spoiler (click to show/hide)Spoiler (click to show/hide)
I know youdon'thave to have Dwarf The Rapist to play......
Any help is appreciated
Could not open logfile for writing! "No such file or directory"
mkdir log; touch log/run.log
2011-Jan-12 02:30:39.429 DEBUG core attempting connection to running DF game [src/mainwindow.cpp:224] (connect_to_df)
2011-Jan-12 02:30:39.438 ERROR core No valid memory layouts found in the following directories... () [src/dfinstance.cpp:98] (DFInstance)
2011-Jan-12 02:30:39.497 DEBUG core base_addr: 134531376 HEX 804c930 [src/dfinstancelinux.cpp:324] (find_running_copy)
2011-Jan-12 02:30:40.152 DEBUG core DF's checksum is "0x884f794d" [src/dfinstancelinux.cpp:328] (find_running_copy)
2011-Jan-12 02:30:40.152 DEBUG core DF's checksum is: "0x884f794d" [src/dfinstance.cpp:636] (get_memory_layout)
2011-Jan-12 02:30:40.308 ERROR core "unable to identify version from checksum:" "0x884f794d" [src/dfinstance.cpp:672] (get_memory_layout)
dwarftherapist/bin/release$ cp -r ../../etc/ .
GTK+ 2+
SDL 1.2+
SDL_image
And some OpenGL implementation:libgl
libglu
Also by running DF through terminal, I've fund out there were some missing x32 libraries. I got them all from Synaptic Package Manager and that was it for DF to make it work. As it turned out it was an easy part :DFailed to fetch http://dwarftherapist.com/apt/dists/maverick/universe/source/Sources.gz 404 Not Found
Failed to fetch http://dwarftherapist.com/apt/dists/maverick/universe/binary-amd64/Packages.gz 404 Not Found Some index files failed to download, they have been ignored, or old ones used instead.
sudo apt-get install build-essential libglib2.0-dev libSM-dev libxrender-dev libfontconfig1-dev libxext-dev
and comppile:$ sudo apt-get install qt4-qmake qt4-dev-tools
$ hg clone https://dwarftherapist.googlecode.com/hg/ dwarftherapist
$ cd dwarftherapist
$ qmake
$ make
After that, make a log directory in the same folder as the binary (bin/release), then copy the dwarftherapist/etc folder in there too.I haven't done this yet, it gives error message but still works for me (only works if launched from terminal).
./bin/release/DwarfTherapist
Unable to talk to Dwarf Fortress: Dwarf Fortress has either stopped running, or your unloaded your game. Please re-connect when a fort is loaded
Finally i googled up this page: http://udpviper.com/forums/viewtopic.php?f=36&t=18106&p=290189&hilit=ubuntu#p290189 (http://udpviper.com/forums/viewtopic.php?f=36&t=18106&p=290189&hilit=ubuntu#p290189)echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
To make this setting permanent, first run the "echo" command above, then edit the /etc/sysctl.d/10-ptrace.conf file. (You'll need to have super-user permissions to save your changes). Look for the line:kernel.yama.ptrace_scope = 1
at the bottom of the file, and change it to:kernel.yama.ptrace_scope = 0
Finally I got Windows-like experience running DF+DT on Linux, hope it helps someone. Hmm the name doesn't ring a bell, nor is it compatible with .18 anyway, but thanks. Hopefully it'll be updated soon.Runesmith is waiting on various updated DFHack values, so its really more waiting for stuff to update so stuff can update.
I suppose there's no hope in a Mac version finally surfacing?I am fairly certain there has been a mac version for a long time.
else:macx {
message(Setting up for OSX)
HEADERS += ./inc/dfinstanceosx.h
SOURCES += ./src/dfinstanceosx.cpp
ICON = hammer.ico
}
I suppose there's no hope in a Mac version finally surfacing?I am fairly certain there has been a mac version for a long time.
Working on a release.
I've got windows layout files if people want to try them and report back (Right-click, save as):
Windows - v0.31.19_graphics.ini (http://www.dwarftherapist.com/memory_layouts/windows/v0.31.19_graphics.ini)
Windows - v0.31.19_legacy.ini (http://www.dwarftherapist.com/memory_layouts/windows/v0.31.19_legacy.ini)
Going to see how bad linux looks then I'll post the release if people are having success.
Thanks,
Justin
Sorry, I don't dare touch updated DF until DT is updated. I can even stand not using tilesets and such, as long as I have DT to manage professions :D.
There's a way to apply custom professions in vanilla??? :oYeah. its in the same screen as the nickname customizer. Been there since 40d, possibly earlier.
I'm looking for (preferably small) save files with dwarves who have the new professions, so if you happen to have/aquire some, please let me know. I'm going to wait to release until I have all of the new professions & labors handled in DT. In the meantime, please let me know if you have problems with the layout files above.Hmm ... You could, maybe, just add the following below '[CREATURE:DWARF]' in raw\object\creature_standard.txt ?
Thanks.
I'm looking for (preferably small) save files with dwarves who have the new professions, so if you happen to have/aquire some, please let me know. I'm going to wait to release until I have all of the new professions & labors handled in DT. In the meantime, please let me know if you have problems with the layout files above.Hmm ... You could, maybe, just add the following below '[CREATURE:DWARF]' in raw\object\creature_standard.txt ?
Thanks.Spoiler (click to show/hide)
That should make ever dwarf start with a Legendary+5 in all the new skills.
I don't know how I ever played without dwarf therapist...
On a side note, did you ever figure out a way to get around that bug that prevented DT from activating the hunting labor on a dwarf and making it behave properly? Or is that something that still has to be turned on inside DF itself? :D
I would like to get a general opinion. I have the memory layouts done. I also have professions / skills / and labor assignment done for the new labors, but I haven't had a chance to dig into all of the jobs associated with them. Would people be interested in an intermediate release knowing that the job column will not be accurate for the new labors?
Otherwise it will take some time to find an embark with bees, setup all of the shearing / spinning / bee keeping, etc workshops needed to figure out what all the new job names are.
I would like to get a general opinion. I have the memory layouts done. I also have professions / skills / and labor assignment done for the new labors, but I haven't had a chance to dig into all of the jobs associated with them. Would people be interested in an intermediate release knowing that the job column will not be accurate for the new labors?
Otherwise it will take some time to find an embark with bees, setup all of the shearing / spinning / bee keeping, etc workshops needed to figure out what all the new job names are.
Windows version 0.6.8 Posted (http://dwarftherapist.googlecode.com/files/DwarfTherapist-0.6.8.zip).
Please let me know if you have any problems, especially around the new labors.
Linux version to follow tomorrow most-likely. (It's getting late here)
There's a way to apply custom professions in vanilla??? :oLike profession names, I assume, not an entirely new method of labor.
There's a way to apply custom professions in vanilla??? :oLike profession names, I assume, not an entirely new method of labor.
Okay, I uploaded that save to DFFD, here (http://dffd.wimbli.com/file.php?id=3805). You should be able to shear some sheep and spin the wool at the farmer's workshop on the surface. There are also hives there, and you can build one to have a dwarf split a hive into it. You'd have to wait for gathering to be possible, though (and I suppose you should probably turn gathering OFF on them until you're ready to see that). On -4, where most of the workshops are, you should be able to mill rock nuts to paste at the quern, press liquid from that paste and press honey from a honeycomb (there's one sitting on the surface right now) at the screw press, make various new things at the craftdwarf's workshop (you may have to assign a labor for some of this stuff) (and despite having wax, wax crafts don't seem to work, as the wax seems to just vanish when someone picks it up from the stockpile to work with it), and gather/work clay and glaze things at the kiln. I -should- have what I need to make mead at the still, but it doesn't work. Perhaps that's also bugged? This doesn't include all the variations, of course, but I guess it could help.
...you can also see how much the metal situation has changed.
216 = "Shear Creature"
217 = "Spin Thread"
218 = "Unknown"
219 = "Unknown"
220 = "Unknown"
221 = "Unknown"
222 = "Collect Clay"
223 = "Install Colony In Hive"
224 = "Collect Hive Products"
From code analysis, I think that the squad_vector is 0x01718758 for .19 graphics.
Memory_layouts/windows/v0.31.19_graphics.ini has 0x01718768.
218 = 'Pen/Pasture Large Animal'
219 = 'Pen/Pasture Small Animal'
220 = currently unused
221 = 'Forge Tool'
From code analysis, I think that the squad_vector is 0x01718758 for .19 graphics.
Memory_layouts/windows/v0.31.19_graphics.ini has 0x01718768.
MAJOR CHANGES:
* Support for most new job types (with icons!)
* Support for automatic downloading of layout files.
(Can be disabled by disabling the version check in preferences)
* This is the first version of Dwarf Therapist that reads RAW files, so please
post any issues found
BUG FIXES:
* Fixed issue 313 - Stuck loading squads on older versions of Dwarf Fortress
Construct (wooden?) Toy and Construct Wooden Barrel's job IDs are mixed around. I think it was something like Code 121 or somesuch?I've already reported this myself several times. Here it is again:
The job name errors were reported on DT's bug tracker over 5 months ago (http://code.google.com/p/dwarftherapist/issues/detail?id=276) - presumably, fixing bugs from the old codebase is low priority.
Sorry, I'll attempt to keep my mouth shut more often.I wasn't whining at you - I was whining at whoever hasn't gotten around to fixing that bug yet in DT.
missing the dwarf race index and squad vector though..
I'm refreshing the page every 5 minutes :/Same here, although, am now playing the "old fashion way" kind of back into the habit of cracking the whip again.
This work for me (Windows SDL version):
[info]
checksum=0x4d734fb5
version_name=v0.31.20 (graphics)
complete=true
[addresses]
translation_vector=0x01724250
language_vector=0x01724230
creature_vector=0x016e0478
dwarf_race_index=0x0150cc28
squad_vector=0x0171e758
This work for me (Windows SDL version):I can confirm these vectors. My search tool independently found the same addresses.
[info]
checksum=0x4d734fb5
version_name=v0.31.20 (graphics)
complete=true
[addresses]
translation_vector=0x01724250
language_vector=0x01724230
creature_vector=0x016e0478
dwarf_race_index=0x0150cc28
squad_vector=0x0171e758
This work for me (Windows SDL version):
[info]
checksum=0x4d734fb5
version_name=v0.31.20 (graphics)
complete=true
[addresses]
translation_vector=0x01724250
language_vector=0x01724230
creature_vector=0x016e0478
dwarf_race_index=0x0150cc28
squad_vector=0x0171e758
how did you found the race index? what you have to search in the address finder?
This work for me (Windows SDL version):
[info]
checksum=0x4d734fb5
version_name=v0.31.20 (graphics)
complete=true
[addresses]
translation_vector=0x01724250
language_vector=0x01724230
creature_vector=0x016e0478
dwarf_race_index=0x0150cc28
squad_vector=0x0171e758
Got this so far.. missing the dwarf race index and squad vector though..
[info]
checksum=0x4d734fb5
version_name=v0.31.20 (graphics)
complete=false
[addresses]
translation_vector=0x01724250
language_vector=0x01724230
creature_vector=0x016e04c8
dwarf_race_index=0x0
squad_vector=0x0
Right. Different executables means different offsets.This work for me (Windows SDL version):
Didn't work for me, maybe because I'm using Legacy instead of Graphics...
the checksums are the same, though.
Here's the creature_vector values my scan came up with:A vector cannot end in anything but 0, 4, 8, or C. So most of those fail the eyeball test.
creature_vector = 0x016e04c8 (uncorrected:0x023d04c8)
creature_vector = 0x016e0478 (uncorrected:0x023d0478)
creature_vector = 0x016e047c (uncorrected:0x023d047c)
creature_vector = 0x0a45badf (uncorrected:0x0b14badf)
creature_vector = 0x0e9a69db (uncorrected:0x0f6969db)
creature_vector = 0x15855283 (uncorrected:0x16545283)
creature_vector = 0x097ecbf3 (uncorrected:0x0a4dcbf3)
If enough people test this with enough systems, we may be able to narrow it down to the correct one... so far, the three consistent ones are 0x016e04c8, 0x016e0478, and 0x016e047c.
Right. Different executables means different offsets.
Unless both programs finished compiling in the same second, the checksums won't be the same. We use the linker timestamp field as a "checksum" to avoid problems with mods that permanently patch the executable.
My tool doesn't spit the checksum out yet, but I got 0x4D72F10D by manual inspection. (It's 8 bytes after the "PE" signature in the EXE header.)
We may be referring to different checksums... this is the "version recognition checksum" that DT returns if it can't connect to the Dwarf Fortress instance currently running. The one I got was 0x4d734fb5, the same as the people using the graphics version have been using, and DT wouldn't be able to connect if it wasn't the correct checksum.No, same checksum.
My theory is that DF creates a creature vector for each of the dwarves. In this case the address to use would be the address of the first vector. That probably is the lowest of the addresses, 0x016e0478 in this case. I did some testing, using the other creature_vector addresses and keeping the others unchanged. This otherwise works but some of the dwarves are not displayed. I take this as circumstantial evidence supporting my theory.No. There are only three real creature vectors that contain dwarves after embark. Rest can't be traced back to stable addresses properly, so it's probably shadows remaining after reallocations... And then there's the fourth vector that contains creatures under the active cursor.
0x1877e88 -- creature under cursor
vectors (subtract 4 to get DT-friendly vectors):
0x16e048c
0x16e047c -- I use this one in dfhack
0x16e04cc
My theory is that DF creates a creature vector for each of the dwarves. In this case the address to use would be the address of the first vector. That probably is the lowest of the addresses, 0x016e0478 in this case. I did some testing, using the other creature_vector addresses and keeping the others unchanged. This otherwise works but some of the dwarves are not displayed. I take this as circumstantial evidence supporting my theory.No. There are only three real creature vectors that contain dwarves after embark. Rest can't be traced back to stable addresses properly, so it's probably shadows remaining after reallocations... And then there's the fourth vector that contains creatures under the active cursor.Code: [Select]0x1877e88 -- creature under cursor
vectors (subtract 4 to get DT-friendly vectors):
0x16e048c
0x16e047c -- I use this one in dfhack
0x16e04cc
No, same checksum.Nope, just Dwarf Fortress.exe and DwarfTherapist.exe. I guess I must have downloaded the graphics version by mistake.
.20 SDL = 4D734FB5 = Sun Mar 6 09:11:17 UTC 2011
.20 legacy = 4D72F10D = Sun Mar 6 02:27:25 UTC 2011
Do you possibly have both the SDL and legacy executables running at the same time? Check via Ctrl-Alt-Delete.
New layouts for linux and windows have been posted online. If you are using Dwarf Therapist 0.6.9, it should download them automatically the next time you start DT with the new version of Dwarf Fortress running. If you have a partial memory layout for v31.20, you'll want to delete it, otherwise Dwarf Therapist may not download the newest version.
If you have problems or want to update therapist manually, you can also download the layouts here:
- Windows SDL (http://www.dwarftherapist.com/memory_layouts/windows/v0.31.20_graphics.ini)
- Windows Legacy (http://www.dwarftherapist.com/memory_layouts/windows/v0.31.20_legacy.ini)
- Linux (http://www.dwarftherapist.com/memory_layouts/linux/v0.31.20.ini)
Yay! I can finnally play .20 now! :D Thanks!
Yay! I can finnally play .20 now! :D Thanks!
Hehe. But Thanks.Yay! I can finnally play .20 now! :D Thanks!
Sorry it took so long. Toady always has to release in the morning when I'm hungover and haven't had anything to drink yet.
I can't get Therapist to work for me in .21. I don't know what to change where to make it happen. Guess I'll just keep checking back to see if someone's had time to update Therapist.
31.21 offsets are the same as 31.20.. just copy it over to a new file with the new checksum and version
[info]
checksum=0x4d743da7
version_name=v0.31.21 (graphics)
complete=true
[addresses]
translation_vector=0x01724250
language_vector=0x01724230
creature_vector=0x016e0478
dwarf_race_index=0x0150cc28
squad_vector=0x0171e758
31.21 offsets are the same as 31.20.. just copy it over to a new file with the new checksum and version
[info]
checksum=0x4d743da7
version_name=v0.31.21 (graphics)
complete=true
[addresses]
translation_vector=0x01724250
language_vector=0x01724230
creature_vector=0x016e0478
dwarf_race_index=0x0150cc28
squad_vector=0x0171e758
I tried making this file and changing this information but it doesn't seem to be working. (I don't use any graphical version of DF would that make a difference?) Any help anyone can offer would be great, managing dwarves after about 10 doesn't work without DT (:
peace
31.21 offsets are the same as 31.20.. just copy it over to a new file with the new checksum and version
[info]
checksum=0x4d743da7
version_name=v0.31.21 (graphics)
complete=true
[addresses]
translation_vector=0x01724250
language_vector=0x01724230
creature_vector=0x016e0478
dwarf_race_index=0x0150cc28
squad_vector=0x0171e758
I tried making this file and changing this information but it doesn't seem to be working. (I don't use any graphical version of DF would that make a difference?) Any help anyone can offer would be great, managing dwarves after about 10 doesn't work without DT (:
peace
rename or copy v0.31.20_graphics.ini to v0.31.21_graphics.ini and replace first 2 sections with that. graphics(ascii graphics...) version is default one.
31.21 offsets are the same as 31.20.. just copy it over to a new file with the new checksum and versionThanks. I've been looking for this for 2 days now.
[info]
checksum=0x4d743da7
version_name=v0.31.21 (graphics)
complete=true
[addresses]
translation_vector=0x01724250
language_vector=0x01724230
creature_vector=0x016e0478
dwarf_race_index=0x0150cc28
squad_vector=0x0171e758
rename or copy v0.31.20_graphics.ini to v0.31.21_graphics.ini and replace first 2 sections with that. graphics(ascii graphics...) version is default one.
New layouts for linux and windows have been posted online. If you are using Dwarf Therapist 0.6.9, it should download them automatically the next time you start DT with the new version of Dwarf Fortress running. If you have a partial memory layout for v31.20, you'll want to delete it, otherwise Dwarf Therapist may not download the newest version.
If you have problems or want to update therapist manually, you can also download the layouts here:
- Windows SDL (http://www.dwarftherapist.com/memory_layouts/windows/v0.31.20_graphics.ini)
- Windows Legacy (http://www.dwarftherapist.com/memory_layouts/windows/v0.31.20_legacy.ini)
- Linux (http://www.dwarftherapist.com/memory_layouts/linux/v0.31.20.ini)
New layouts for linux and windows have been posted online. If you are using Dwarf Therapist 0.6.9, it should download them automatically the next time you start DT with the new version of Dwarf Fortress running. If you have a partial memory layout for v31.20, you'll want to delete it, otherwise Dwarf Therapist may not download the newest version.
If you have problems or want to update therapist manually, you can also download the layouts here:
- Windows SDL (http://www.dwarftherapist.com/memory_layouts/windows/v0.31.20_graphics.ini)
- Windows Legacy (http://www.dwarftherapist.com/memory_layouts/windows/v0.31.20_legacy.ini)
- Linux (http://www.dwarftherapist.com/memory_layouts/linux/v0.31.20.ini)
New files are posted for 31.21.
Link directs to http://www.dwarftherapist.com/memory_layouts/linux/v0.31.20.iniYou can delete your local version of v0.31.21.ini and DT should download it automatically. Otherwise, I've uploaded them here as well:
Changing the checksum doesn't work for the Linux version.
That also appears to be true of Beekeeping. Although wax working and beekeeping are listed in Therapist, and Therapist correctly highlights the box for those skills, the dwarf's job title is listed as Unknown Profession. In addition, it appears that Therapist is unable to modify the profession assignments for dwarves with these unknown professions (although you can properly assign beekeeping/waxworking/etc to other dwarves, as long as they did not migrate in assigned with those professions). You can change their custom profession name via Therapist, but not their assigned professions.
Hmm, this "not able to assign jobs to beekepers" thing is annoying. any ideas anyone as to how solve it?
size=105
105/name = Beekeeper
105/id = 104
size=106
105/name = Beekeeper
105/id = 104
106/name = Waxworker
106/id = 105
Hehe, don't you hate it when all the dwarf civilizations die out before the game starts? The Elder Scrolls series is pretty fun, I hear they are coming out with a new Nord based one next year.
Yea, thanks muchly. a lot easier than i worried it might be.
EDIT...
FYI, that fix now allows me to write and read changes to assigned labours for beekeepers and waxworkers, but doest display thier skills.
I just built Dwarf Therapist from the latest code on Google Code project page & thought I share, link (http://www.mediafire.com/?ayy79y2f0rwvay9). If people would like me to continue sharing, just let me know & I will do.
using 6.9 got from the new lazy newb pack...all my dorfs are listed as first name unknownunknown ..way to fix this?
Dwarf Therapist 0.6.10 released with official 0.31.21 support (fixes Beekeeper/Waxworker issues)
See first page.
Ubuntu packages are building and should be posted shortly.
Debian packages are not currently building due to keystore issues between the two distros.
When will this be updated for 0.31.22?!
;D
Dwarf Therapist 0.6.10 released with official 0.31.21 support (fixes Beekeeper/Waxworker issues)
See first page.
Ubuntu packages are building and should be posted shortly.
Debian packages are not currently building due to keystore issues between the two distros.
I had to do it, it was too quiet in hereWhen will this be updated for 0.31.22?!
;D
LOL!!!!
Maybe after 0.31.22 comes out, but that is just a guess of course =p
Hmm...
AFAIR in older forms of therapist, the fortress gaurd was filtered under the sqaud option like any other body of troops. This no longer seems to be the case. Can anyone else confirm this or is the issue with an action on my behalf?
???
EDIT: Nevermind. After reloading DF therapist sorted them into a squad correctly.
Same.Hmm...
AFAIR in older forms of therapist, the fortress gaurd was filtered under the sqaud option like any other body of troops. This no longer seems to be the case. Can anyone else confirm this or is the issue with an action on my behalf?
???
EDIT: Nevermind. After reloading DF therapist sorted them into a squad correctly.
same, 0.6.10 stopped recognising squads, fixed by reloading df.
And this gets Therapist to run with .22? How would a layman apply this knowledge?
And this gets Therapist to run with .22? How would a layman apply this knowledge?
I will do full release this weekend, just want to be sure there isn't an immediate 31.23 like last time :)
For what it's worth...
The auto-update v0.31.22_graphics.ini has:
squad_vector=0x01701788
My search tool finds:
squad_vector=0x01701778
I have no running fort with a military so I can't test myself.
I will do full release this weekend, just want to be sure there isn't an immediate 31.23 like last time :)
.23 is working with the fixes for .22 for me.
I have no idea what I'm doing, but this seems to work:
[info]
checksum=0x4d8de854
version_name=v0.31.23 (graphics)
complete=true
[addresses]
translation_vector=0x01708270
language_vector=0x01708250
creature_vector=0x016c4498
dwarf_race_index=0x014f0c28
squad_vector=0x01702778
I have no idea what I'm doing, but this seems to work:
[info]
checksum=0x4d8de854
version_name=v0.31.23 (graphics)
complete=true
[addresses]
translation_vector=0x01708270
language_vector=0x01708250
creature_vector=0x016c4498
dwarf_race_index=0x014f0c28
squad_vector=0x01702778
I believe that you take .22's .ini file, make a renamed copy for .23 and replace the first few lines with that.I have no idea what I'm doing, but this seems to work:
[info]
checksum=0x4d8de854
version_name=v0.31.23 (graphics)
complete=true
[addresses]
translation_vector=0x01708270
language_vector=0x01708250
creature_vector=0x016c4498
dwarf_race_index=0x014f0c28
squad_vector=0x01702778
Can someone briefly explain how to get this info imported to DT?
A minor display bug in DF Therapist - Beekeeping skill and xp level do not show properly in the table, even though Therapist correctly extracts this information from game memory and displays in dwarf summary popup.
Screenshot attached.Spoiler (click to show/hide)
A minor display bug in DF Therapist - Beekeeping skill and xp level do not show properly in the table, even though Therapist correctly extracts this information from game memory and displays in dwarf summary popup.
Screenshot attached.Spoiler (click to show/hide)
I have a related bug; migrants with the "Beekeeper" profession cannot have beekeeping enabled or disabled through TheRapist. Other dwarves can, but migrants that ARRIVE as "Beekeepers" need this profession enabled or disabled in game only. It only happens with migrant beekeepers; dwarves who have other profession titles can have beekeeping enabled or disabled as normal. I have not leveled up a beekeeper to test if this is a bug with migrants only, or if it applies to any dwarf that gains the "Beekeeper" profession.
Hmm, this "not able to assign jobs to beekepers" thing is annoying. any ideas anyone as to how solve it?
Go into etc, open game_data, find the [professions] section, put this after the [professions] tag:Code: [Select]size=106
and this at the endCode: [Select]105/name = Beekeeper
105/id = 104
106/name = Waxworker
106/id = 105
When you find a dwarf who has an unknown profession, mouse over his icon and it will say something like "unknown profession ID 106" or whatever, just look at his profession name, put that and the id at the end of the section, and update the size.
Running Dwarf Fortress 0.31.24 in Linux.
For some reason Dwarf Therapist connects but when it attempt to read the dwarves it says DwarfFortress has stopped running.
I am using latest hg pull.
- edit -
Sorry, make clean & make fixed it somehow.
- edit 2 -
No, something is definitely wrong. Now it only reads wave 1 even though I have gotten two more waves of migrants.
- edit 3 -
Well, a workaround is saving & reloading in DwarfFortress then reading the values again. I didn't notice it at first because it was a new fortress (the stopped running issue), loading the same fortress pulled data but then no more waves got registered.
It seems to be reading the save data instead of the memory data.
I will perform a hg rollback and see if it's something that was updated.
Vectors for .23 work for .24, so this is all you need to change.
checksum=0x4d8f39f9
version_name=v0.31.24 (graphics)
Does anybody have an idea for me? I just can't enable things in dwarf therapist for some dwarf from the migrant wave. To edit the initial dwarfs in Dwarf Therapist worked just fine.
Does anybody have an idea for me? I just can't enable things in dwarf therapist for some dwarf from the migrant wave. To edit the initial dwarfs in Dwarf Therapist worked just fine.
Are you sure it's not a child? That's the only usual reason unless its the representative from the mountainhomes that comes with the caravan, beyond that, something is probably afoot.
There was actually a fairly simple fix to that issue a couple pages back, before the .22 release, but I guess it didn't make it into the official Therapist update:Hmm, this "not able to assign jobs to beekepers" thing is annoying. any ideas anyone as to how solve it?
Go into etc, open game_data, find the [professions] section, put this after the [professions] tag:Code: [Select]size=106
and this at the endCode: [Select]105/name = Beekeeper
105/id = 104
106/name = Waxworker
106/id = 105
When you find a dwarf who has an unknown profession, mouse over his icon and it will say something like "unknown profession ID 106" or whatever, just look at his profession name, put that and the id at the end of the section, and update the size.
So far I've found this works with the latest version. (0.31.25)
I can't confirm that it works 100% but haven't noticed any issues so far.Spoiler (click to show/hide)
DT/etc/memory_layouts/windows/
Duplicate the latest (should be 31.21_graphics) and rename the copy 31.35. Replace it's text with what is shown.
I can't confirm that it works 100% but haven't noticed any issues so far.
Addition: I was able to confirm that the offset in the INI file is correct (0x003c for me) and I see the c-string located at that offset. I told DT to change the custom profession name and the pointer to a c string did not change, and the memory pointed to did not change either.It is NOT a C string. It's a STL string. That's a big difference.
Wish I could also participate in the general bug-free happy dance, but something in the latest DT crashes for me in a way that I've never seen DT do before, and have been using it since early 0.31.xyou're in a multilib enviroment, right?
Running 64 bit Linux compiled from source pulled from the hg tree as of current date (identifying itself as v0.6.11), and also under gentoo. I've also checked and compiled the latest of all the packages DT uses that are dynamically linked against the DT binary - still no improvement.
For the curious these areSpoiler (click to show/hide)
What happens is an immediate crash (that brings up gnomes 'bug-buddy' tool that cant identify the application but still offers to generate a debug trace regardless) whenever i click on any of the labour items for all dwarves listed bar.. one. Why this dwarf (a high master milker with some ability as an animal trainer, fisher and bonecarver) is exempt from the crash I have no idea.. and it still crashes for him when I try and click on his name to bring up traits, all skill levels and xp to next level and the like - as it does for all the other dwarves.
Going back to dt circa December 30th 2010 (0.6.7 I believe) which worked perfectly under 0.31.18 also works for 0.31.25 as long as I have the newer memory_layouts for 0.31.25 and if I can live with not having any of the new skills like beekeeping, glazing and pottery represented, listed or controllable - as these options were not present at the time. Which is a far sight better than having it be completely unusable I guess, and my fortress isn't at a level yet where desperation to know who my bee-keepers are and how good they are is a burning need.
But still is bothersome. Anyone seen anything similar? Older dt versions that are working and linked against the same libraries when current ver is broken is suggestive of some new feature or capability that isnt right yet that's involved with GUI popups or setting active labors.
DT/etc/memory_layouts/windows/
Duplicate the latest (should be 31.21_graphics) and rename the copy 31.35. Replace it's text with what is shown.
Still no chance for an update version of the mac client? Is it possible to cider wrap the current client? I know the last non official version you had to target DF...I know alot of mac player dont get very far because of the time it takes to assign workers and remember which workers are doing what, looking through the in game UI for this is fairly clunky.It is open source, if you have a mac, go to it.
Still no chance for an update version of the mac client? Is it possible to cider wrap the current client? I know the last non official version you had to target DF...I know alot of mac player dont get very far because of the time it takes to assign workers and remember which workers are doing what, looking through the in game UI for this is fairly clunky.It is open source, if you have a mac, go to it.
Still no chance for an update version of the mac client? Is it possible to cider wrap the current client? I know the last non official version you had to target DF...I know alot of mac player dont get very far because of the time it takes to assign workers and remember which workers are doing what, looking through the in game UI for this is fairly clunky.It is open source, if you have a mac, go to it.
I have no way of knowing how to go about it. I guess i could look into some sort of way to do it. I have zero coding/compiling experience.
Is the demand for a mac version really all that strong?
I think the number of mac users would be significantly higher than one would expect because this is one of the very few games available for the mac that actually runs OK on a mac...For some reason this statement while probably accurate also makes me laugh. We like the game because it is one of the few games which work for us. I guess that's a good reason. :)
Can someone detail the steps for getting this to work properly for .25?If you are using a windows flavor, just download the latest version and it will work. As for corrupting your fort, DT is unlikely in the extreme to do that, however DF IS NOT! There is a seasonal and autobackup option. USE THEM! trust me!!!!!! *has had to go back due to crash bugs MULTIPLE times.
If I'm reading write, I get the most recent version and patch the XML file with a list of new memory addresses? Is that it?
Don't want to corrupt my fort is all.
New layouts for linux and windows version 0.31.22 have been posted online. If you are using Dwarf Therapist 0.6.9 or later, it should download them automatically the next time you start DT with the new version of Dwarf Fortress running.This feature is AWESOME. Thank you so much!
erm maybe its just me but it shows all ym dwarfs first names but after that it just say unkownunknown for every dwarfs last names any ideas?
Wish I could also participate in the general bug-free happy dance, but something in the latest DT crashes for me in a way that I've never seen DT do before, and have been using it since early 0.31.xyou're in a multilib enviroment, right?
Running 64 bit Linux compiled from source pulled from the hg tree as of current date (identifying itself as v0.6.11), and also under gentoo. I've also checked and compiled the latest of all the packages DT uses that are dynamically linked against the DT binary - still no improvement.
For the curious these areSpoiler (click to show/hide)
What happens is an immediate crash (that brings up gnomes 'bug-buddy' tool that cant identify the application but still offers to generate a debug trace regardless) whenever i click on any of the labour items for all dwarves listed bar.. one. Why this dwarf (a high master milker with some ability as an animal trainer, fisher and bonecarver) is exempt from the crash I have no idea.. and it still crashes for him when I try and click on his name to bring up traits, all skill levels and xp to next level and the like - as it does for all the other dwarves.
Going back to dt circa December 30th 2010 (0.6.7 I believe) which worked perfectly under 0.31.18 also works for 0.31.25 as long as I have the newer memory_layouts for 0.31.25 and if I can live with not having any of the new skills like beekeeping, glazing and pottery represented, listed or controllable - as these options were not present at the time. Which is a far sight better than having it be completely unusable I guess, and my fortress isn't at a level yet where desperation to know who my bee-keepers are and how good they are is a burning need.
But still is bothersome. Anyone seen anything similar? Older dt versions that are working and linked against the same libraries when current ver is broken is suggestive of some new feature or capability that isnt right yet that's involved with GUI popups or setting active labors.
try compiling 32-bit DT. default symlinks IIRC all point to x64 libs.
I'm surprised Toady hasn't taken it upon himself to implement a similar system in place the existing, as a standard game component.Because implemented as separate project is easier for him?
I'm surprised Toady hasn't taken it upon himself to implement a similar system in place the existing, as a standard game component.Because implemented as separate project is easier for him?
Feature request: ability to set the set nickname for multiple dwarfs.
I would use it. I'm actually playing DF on a pc right now simply due to the lack of dwarf therapist on os x. My mac might actually be faster too.
Old feature request from another thread, guess I should put it here since it's sort of a therapist thing...
Let us have a tab for animals. Include age, gender, fat/muscle/size and let us toggle slaughtering.
Why yes, I am sick of not being able to view size from the kitchen tab, or easily view gender from the unit tab without having to view the animal, and I only want my fattest and musclebound giants to survive to breed. XD
...I also know how crazy this request is, and it's more of a wish than a request for Therapist as it currently stands. >.>
Old feature request from another thread, guess I should put it here since it's sort of a therapist thing...
Let us have a tab for animals. Include age, gender, fat/muscle/size and let us toggle slaughtering.
Why yes, I am sick of not being able to view size from the kitchen tab, or easily view gender from the unit tab without having to view the animal, and I only want my fattest and musclebound giants to survive to breed. XD
...I also know how crazy this request is, and it's more of a wish than a request for Therapist as it currently stands. >.>
Actually it is not that crazy of a request. I think it fits very nicely into the vision statement of DT. And I would prefer to see it in DT than its other natural fit Dwarf Foreman.
(And now that I think about it, dwarf foreman does not have any of the "Homework" done for this like Therapist does. DT has almost all of the infrastructure, it just needs to display it and allow you to toggle the slaughter bit. )
I'd like to third the idea of being able to manage animals with Dwarf Therapist.
New layouts for linux and windows version 0.31.25 have been posted online. If you are using Dwarf Therapist 0.6.9 or later, it should download them automatically the next time you start DT with the new version of Dwarf Fortress running. If you have a partial memory layout for v31.25, you'll want to delete it, otherwise Dwarf Therapist may not download the newest version.
If you have problems or want to update therapist manually, you can also download the layouts here:
- Windows SDL (http://www.dwarftherapist.com/memory_layouts/windows/v0.31.25_graphics.ini)
- Windows Legacy (http://www.dwarftherapist.com/memory_layouts/windows/v0.31.25_legacy.ini)
- Linux (http://www.dwarftherapist.com/memory_layouts/linux/v0.31.25.ini)
There will be a release.
I'm less sure of when.
Needs a business merger between DT and Runesmith!
New layouts for linux and windows version 0.31.25 have been posted online. If you are using Dwarf Therapist 0.6.9 or later, it should download them automatically the next time you start DT with the new version of Dwarf Fortress running. If you have a partial memory layout for v31.25, you'll want to delete it, otherwise Dwarf Therapist may not download the newest version.
If you have problems or want to update therapist manually, you can also download the layouts here:
- Windows SDL (http://www.dwarftherapist.com/memory_layouts/windows/v0.31.25_graphics.ini)
- Windows Legacy (http://www.dwarftherapist.com/memory_layouts/windows/v0.31.25_legacy.ini)
- Linux (http://www.dwarftherapist.com/memory_layouts/linux/v0.31.25.ini)
There will be a release.
I'm less sure of when.
It is not in the vision statement for DT. And it is specifically where the creator did not want to go. DT = Helper tools, Cheat programs = Separate.
(http://www.img.ie/4941c.png)
Why? Long nicknames are legal in DF.Spoiler: Long nickname, layout breaking (click to show/hide)
So "no one" is asking about ability to assign the same nickname to multiple dwarves.What does assigning the same nickname and nickname length have to do with each other?
thisSo "no one" is asking about ability to assign the same nickname to multiple dwarves.What does assigning the same nickname and nickname length have to do with each other?
Everything. ... or nothing, if you want to crash the game.thisSo "no one" is asking about ability to assign the same nickname to multiple dwarves.What does assigning the same nickname and nickname length have to do with each other?
Ok, consider me thoroughly confused.thisSo "no one" is asking about ability to assign the same nickname to multiple dwarves.What does assigning the same nickname and nickname length have to do with each other?
Is there a currently suggested alternative for mac users?
It is not in the vision statement for DT. And it is specifically where the creator did not want to go. DT = Helper tools, Cheat programs = Separate.
Given that you can use DT to set nobles, children, and babies to labor in your fortress and get called out for cheating by using this option, I'd say DT is cheat program. You could argue that almost anything that's not vanilla Fortress is a cheat.
As for additions, I'm of the opinion that having a tab for animals would be a very helpful addition, since it'd make tracking the best breeding stock, culling out extraneous critters, and other animal management duties much easier. It'd be nice to see pasturing/caging of animals (and maybe other things...) be a toggle-able feature as well. It would also be kind of neat to have an option to tame prisoners for use as slave laboror food, but that might be a bit much...
It is not in the vision statement for DT. And it is specifically where the creator did not want to go. DT = Helper tools, Cheat programs = Separate.
Given that you can use DT to set nobles, children, and babies to labor in your fortress and get called out for cheating by using this option, I'd say DT is cheat program. You could argue that almost anything that's not vanilla Fortress is a cheat.
As for additions, I'm of the opinion that having a tab for animals would be a very helpful addition, since it'd make tracking the best breeding stock, culling out extraneous critters, and other animal management duties much easier. It'd be nice to see pasturing/caging of animals (and maybe other things...) be a toggle-able feature as well. It would also be kind of neat to have an option to tame prisoners for use as slave laboror food, but that might be a bit much...
Please read the vision statement as I mentioned before posting things like this. Those things were bugs, and they were moved to options because of the way the behaviors work but will probably be gone one day.
http://code.google.com/p/dwarftherapist/wiki/VisionStatement
Is there a currently suggested alternative for mac users? I'm newish to the game, and really enjoying it. I've not used a manager before, but am starting to see the need. I'm not willing to reboot to another OS for it, though. I gather there's not a version of DT that'll work. sadness. How about an another manager?
Is there a currently suggested alternative for mac users? I'm newish to the game, and really enjoying it. I've not used a manager before, but am starting to see the need. I'm not willing to reboot to another OS for it, though. I gather there's not a version of DT that'll work. sadness. How about an another manager?
From the forum here, looks like there's at least three of us working on a Mac port right now, probably would work better if we pooled our efforts. If the other two see this lets DM emails or talk on the Dwarf Therapist forums, I'm making pretty good progress with mine right now...
This stuff seems like it would be within the vision statement.
is not intended to create a ‘game outside of the game’ in manners that extend game functionality (such as command-chaining or macros)
Oh... kay. Didn't expect my silly little idea of a livestock manager to side-by-side the dwarf manager would get people to blow up like this.'
Although to be honest, I really can't see where it falls outside of the vision statement, as it's doing what it already does, just to a different group of objects.
Where is a livestock manager already in development, Jeo? I'd like to poke at it and see how it's going.
Who ultimately decides what falls within the vision statement?The maintainer/coder.
You guys do realize there are other programs in development currently that do just what you're basically bitching about, right?
I mean, I wouldn't dislike having options for livestock, or suggested professions, or something like that.
But DwarfEngineer has a certain program he's made, and is going a certain direction with it. It's already basically required to play DF. And to ask him to do anything with this program that he doesn't want to do, then get upset when he doesn't want to do it just because it's been requested, is not only rude... it's insane.
You're not the coder. Do you even comprehend how complex a program can get? How difficult it can be to get a single thing working the way one wants? If you do, you're a programmer. Please, do it yourself. We will probably download and use it. But until you do so, please... stop trying to force others to do the work for you.
That is all.
For that matter, it's an open source project. Seems like it wouldn't be that terribly hard to fork the project, add more features, and possibly submit a patch to the main version.Forking the project means that someone has to maintain it, and merge new features into the source tree when they're added to the mainline version. It seems difficult enough to find one person who wants to maintain DT so getting two to do it and spend enough time to keep up with both would be even more difficult.
Every post of you're I've been unlucky enough to come across is you talking down to people and kissing the ass of anyone who has made a line of code. Granted, maybe I've just been unlucky enough to catch you in threads that you're agitated with, but it's really become quite annoying.And it is very unlucky. You've missed me trying to help people with questions or problems, and many suggestions and ideas that I've tried to share with others. I think it's mainly that people don't cause stinks about posts they agree with or that helped them... in those circumstances it's usually just "thanks" and the thread is done...
so, do we have to prepare ourselves for a fair bit of time without DT?
I mean, aren't undead flags used in DT to filter out invalid creatures?
Hi...There are a lot of problems with beekeeping inside if dwarf fortress... I have some hives and with some abusive construction based exploits was actually able to make them work ok, but I am giving you fair warning you probably will be unable to use hives that well.
Did I miss an update for Therapist???
Anyone that comes in with the skills for Beekeeping (Beekeeping/Waxworking) makes them unable to be adjusted through the Therapist. What did I miss to change this problem???
With the level of things wrong in the dwarf fortress code around hives, I cannot guess how you could tell if there was something wrong in DT.Well, it reads them as "Unknown Profession" and refuses to change their labors unless you turn on the cheatsyface option.
With the level of things wrong in the dwarf fortress code around hives, I cannot guess how you could tell if there was something wrong in DT.Well, it reads them as "Unknown Profession" and refuses to change their labors unless you turn on the cheatsyface option.
It does this for Pressers and Wax Workers too.
It's a pretty tiny thing, really, compared to the actual bee-related bugs in DF itself.
Any chance that the bit that stores custom-defined jobs could be stored with the executable, or at least make it an option?
My problem is that I transfer my DF stuff around between different systems, and the custom jobs wind up being different everywhere (I assume its stored under the user Application Data directory...)
Something to think about, especially with people apparently working on a Mac port.
3) In the "Dwarf Detail" view some dwarves have an "UNKNOWN" skill... what's that supposed to be?I know one is Military Tactics (http://df.magmawiki.com/index.php/DF2010:Military_tactics) at least.
I'm having issues getting DT to work. It opens fine, but doesn't connect to DF. I can manually click the "Connect To DF" button without an error, but if I click the "Read Dwarves" button the app crashesIf you have not done so already, reboot your computer and try again.'
I'm having issues getting DT to work. It opens fine, but doesn't connect to DF. I can manually click the "Connect To DF" button without an error, but if I click the "Read Dwarves" button the app crashesIf you have not done so already, reboot your computer and try again.'
Make sure you are running 0.6.10 (Help->About)
Also run DT as administrator and make sure you do not have any heuristic based anti-malware programs on that might intercept DT's memory read.
also try making a new pocket world and embarking with a couple dwarves and and seeing if you can still cannot connect.
Also if you have any mods, try it with a clean version and see if one of the jobs or something is causing a crash, never heard of it, but it is a possibility...
Just to double check you are running the SDL version and not the legacy version of dwarf fortress correct?
Also run this just to make sure -> http://dffd.wimbli.com/file.php?id=2702
Oh! no, it is checking for INI files. If it does not recognize the version it will look for and download them from the main site.
if it cannot connect, the last version .6.10 will work with is v0.31.21 graphics + legacy
* it also does version checking though I think in the newest ones.
If you want to download the memory layouts for the new version manually you can get them from here -> http://code.google.com/p/dwarftherapist/issues/detail?id=328#c2
Oh! no, it is checking for INI files. If it does not recognize the version it will look for and download them from the main site.
if it cannot connect, the last version .6.10 will work with is v0.31.21 graphics + legacy
* it also does version checking though I think in the newest ones.
If you want to download the memory layouts for the new version manually you can get them from here -> http://code.google.com/p/dwarftherapist/issues/detail?id=328#c2
That worked! THANK YOU! :D
How do you install it on Linux? I found a file on DFFD and i tried it. But it doesn't work...
Okay, so I used puppy linux and extracted the .tar.bz2 file to a folder. But after I click the execute button, nothing happens.How do you install it on Linux? I found a file on DFFD and i tried it. But it doesn't work...
We need some more info to help. How did you install it, how did you try to run it, did you get any error messages, that sort of stuff.
I think you should only need to extract the files and it should work by just running the executable. For me I ended up copying the executable and etc foder into the same folder and it worked, but I built it from source.
if it is a package(like .rpm) and not an archive (like .tar) you should install it using your package manager. Googling something like install rpm ubuntu (if its an rpm and you are using ubuntu) should get you some good instructions.
*screen capture of textual output*
[command and switches etc. goes here] > error.txt
to send the output to a easy to share text file. (in forums just share like select all -> copy -> paste in forum)
is it possible to not install it? or is there another thing like dwarf therapist that doesn't require it? because i dont want my linux save file to go over 325 mb...
so is there a program that is like dwarf therapist but doesnt require QT?Why wouldn't you get QT? Doesn't puppy linux have a package manager?
Yes, but Qt is like 600 mbs. I'm not supposed to make my save file over around 250 mbs.Oh. I get it. You're using a weird distro that stuffs things into a mounted file (the 'save file') or something? I can tell you 64bit Qt on my machine is just 24MB while *compressed* - this is without debug symbols and documentation - just the libs and headers. You shouldn't need more space for it.
doesn't work sadly, "LD_LIBRARY_PATH=. ./bin/DwarfTherapist" gives me:Code: [Select]./bin/DwarfTherapist: symbol lookup error: ./bin/DwarfTherapist: undefined symbol: _ZN9QHashData14detach_helper2EPFvPNS_4NodeEPvEPFvS1_Eii
I get the same error message when I try to run dt (The linux alpha that is). Down to the letter I think.
Yes, but Qt is like 600 mbs. I'm not supposed to make my save file over around 250 mbs.Oh. I get it. You're using a weird distro that stuffs things into a mounted file (the 'save file') or something?
Why does the therapist try to connect to the internets?If I remember correctly, it's a simple version check.
Why does the therapist try to connect to the internets?
And I didn't find anything, when flying over the last few pages, though it probably stands somewhere...: Is there going to be a version compatible with DF .31.25 anytime soon?
Thanks for any answers in advance, Loki :)
I know DT is supposed to update automatically but for some reason that's not working for me. My knowledge of programming and the like is fairly limited and scattershot, so can someone please post the stuff I need to get DT 6.10 working with DF 31.25 and tell me how to apply it?Is your firewall (such as Windows Security settings) blocking DT from the Internet?
Oh! no, it is checking for INI files. If it does not recognize the version it will look for and download them from the main site.
...
[snip]
If you want to download the memory layouts for the new version manually you can get them from here -> http://code.google.com/p/dwarftherapist/issues/detail?id=328#c2
Comment 1 by shawn.weiner, Apr 25, 2011
It appears that you are running without the updated memory layouts for 31.25.
Download the two files that I've attached to my comment, then put them in the \etc\memory_layouts\windows within your dwarf therapist directory. This should allow your DT to work with 31.25
Hi! I was wondering, is there any way to use this for .25? It says, that the last supported version is .21, but... with some changes to a file or two, it's possible, right?
Hi! I was wondering, is there any way to use this for .25? It says, that the last supported version is .21, but... with some changes to a file or two, it's possible, right?
Why does the therapist try to connect to the internets?
And I didn't find anything, when flying over the last few pages, though it probably stands somewhere...: Is there going to be a version compatible with DF .31.25 anytime soon?
Thanks for any answers in advance, Loki :)
It connects to the internet to download the memory layout for .31.25 .....
Yes... seriously...
Um... Damn! I went and did this manually...
Am I allowed to delete older memory layouts if I don't use DT with those versions anymore?
Also, why are there two memory layouts for each version? Do I need both?
Is there any way of checking what version I have, without using DT?
Also, it doesn't recognize the military tactics skill...
Could not open logfile for writing! "No such file or directory"
Application asked to unregister timer 0x1d000008 which is not registered in this thread. Fix application.
Application asked to unregister timer 0x9000008 which is not registered in this thread. Fix application.
Application asked to unregister timer 0x18000009 which is not registered in this thread. Fix application.
Application asked to unregister timer 0x48000014 which is not registered in this thread. Fix application.
Uhh, guys, sorry for the necro, but how do I install this on linux? I managed to get it running before but I kind of... forgot.
I'm running Ubuntu Natty 64 bit.
Doesn't seem to work for my .25, but it does for my room mate and we're running the same OS. Madness.
i have a mac, but never compiled anything on it.
how should i try it?
Is this a .ZIP file?Everything you ever wanted to know can be found: http://www.bay12forums.com/smf/index.php?topic=66525.0
What does DT do, exactly?
I've never used these utilities yet.
Could not open logfile for writing! "No such file or directory"
"Unknown error"
I'm sorry. I'm having trouble connecting to DF. I can't seem to locate the PEB address of the process.
Please re-launch DF and try again.
The auto-updater says it's updated (I even went so far as to reinstall Dwarf Therapist) and I still get errors when I attempt to run with DF 0.31.25, and it looks to me as if it isn't updated. Should I post the run.log for you? Or is there something else I should do here?
This is the specific error message:Code: [Select]I'm sorry. I'm having trouble connecting to DF. I can't seem to locate the PEB address of the process.
Please re-launch DF and try again.
I have attempted re-launching DF and it has not fixed it, I've also attempted:
Running DT only when I can see the fortress,
Running DT then DF,
Running DF then DT when I can see the fortress and attempting to force DT to scan for dwarves while a fortress is active, which should work but instead resulted in a hard crash of DT >:( .
I'm probably missing something obvious and simple here.
I tried Dwarf Therapist on Ubuntu:
and this is what I got after the "LD_LIBRARY_PATH= ...etc"
LD_LIBRARY_PATH= /home/prestonpc/Games/dt/bin/DwarfTherapist >error.txt
Could not open logfile for writing! "No such file or directory"
Application asked to unregister timer 0x1d000008 which is not registered in this thread. Fix application.
Application asked to unregister timer 0x7b000008 which is not registered in this thread. Fix application.
Application asked to unregister timer 0xa000009 which is not registered in this thread. Fix application.
Application asked to unregister timer 0x74000013 which is not registered in this thread. Fix application.
Dwarf Therapist popped up for a bit, then it shut down and gave me that
The build output directory for dwarf therapist is parallel to the root of the source directory and named dwarftherapist-build-desktop. In order to run dwarf therapist you should create an empty log directory under the release or debug directory, and copy the etc folder to the same location. You should end up with a directory structure such as this:
bin
debug
etc
log
DwarfTherapist.exe
release
etc
log
DwarfTherapist.exe
Once you have this structure, you should be able to launch DwarfTherapist and execute step-through debugging.
kernel.randomize_va_space = 0
kernel.yama.ptrace_scope = 0
You have a problem: you are using a nanny-like linux distribution. It assumes that you are a simple user and protects you from anything that resembles a threat. This is a good thing, in some cases. In other cases, it's breaking basic functionality, like debugging.
Anyway, to fix the problem:
- Open /etc/sysctl.conf as root and add these lines:
Code: [Select]kernel.randomize_va_space = 0
kernel.yama.ptrace_scope = 0
- Save
- Reboot
Is Therapist still being developed? Or just... Supported?Well. I have no idea. I have this thread in my notification list and try to help people who have problems with it... that's about it. You could say that it's supported, but I'm not even looking at the code.
Is Therapist still being developed? Or just... Supported?Well. I have no idea. I have this thread in my notification list and try to help people who have problems with it... that's about it. You could say that it's supported, but I'm not even looking at the code.
I had this working beautifully on Windows 7, but wen I tried it on my school issued laptop (Windows XP) It wouldn't work. I am pretty nooby and I really need this to manage my fortress. I don't know if it's the restrictions on the laptop or some other thing. I'm fairly tech-savvy but I don't want to fiddle with unnecessary settings. If anyone could help I would be hugely appreciative.
I can only guess. In the past, I had to drop support for any versions of Windows older than XP SP 3 and even there, it was a major struggle to get things running - had to drop Win 2000 because its kernel API is just missing some essential bits and later XP < SP3 for similar reasons. Getting the new 'stonesense as plugin' running on XP was a battle several days long.Is Therapist still being developed? Or just... Supported?Well. I have no idea. I have this thread in my notification list and try to help people who have problems with it... that's about it. You could say that it's supported, but I'm not even looking at the code.
Do you know anything about my problem? I can't find anything on it....
You could say that it's supported, but I'm not even looking at the code.
These were 2 errors in the first message box.Well. That doesn't tell me much about your problem. Only that you have a problem. The app will put red icons next to stuff that's bad - namely missing 'modules' and missing imported symbols. Somewhere in that window should be some kind of hint as to what the problem is. Hmm. Just make the app full screen and post a screenshot... that will be easier than explaining what all those things are :)
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
I have made a clone of Dwarf Therapist with some added features:Not working quite right for me on Ubuntu 11.04.
- a tab with the list of the tamed creatures and the possibility to set which of them have to be butchered (it should work with any mod because reads the races names from the raw)
- reenabled and expanded the reading of the physical attributes (strength, agility, toughness, endurance, recuperation, disease resistance). The description of the attribute should match the in game description with any mod (it reads the attributes mean values from the raws)
- age of the selected creature
- group by caste (it should work with any mod because reads the caste names from the raws)
- group by race (for the dwarf it shows dwarf, baby, child)
I have modified the Windows layout for 31.25 graphic version only, so it will not work on any other version for now.
Anyone interested in it can get the source of this clone here:
hg clone https://code.google.com/r/shishimar-dwarftherapist/
PSStonesense can detect the location of zones you might want to ask in the Stonesense thread.
There is anyone out there that knows how and where the pasture zones are codified in the DF memory?
Not working quite right for me on Ubuntu 11.04.
[info]
checksum=0xfc15065c
version_name=v0.31.25
complete=true
[addresses]
translation_vector=0x0944c41c
language_vector=0x0944c404
creature_vector=0x0940b174
dwarf_race_index=0x093f2b5c
squad_vector=0x09449064
current_year=0x093F0600
[offsets]
word_table=0x001C
[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024
[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0144
current_job=0x025c
states=0x0
souls=0x0530
labors=0x054C
happiness=0x05DC
squad_ref_id=0x0640
caste=0x00A4
birth_year=0x01A0
strength=0x310
agility=0x32C
toughness=0x348
endurance=0x364
recuperation=0x380
disease_resistance=0x39C
[soul_details]
skills=0x01C4
traits=0x01DC
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x000C
members=0x0044
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[valid_flags_3]
size=1
1\name=Untamed
1\value=0x04000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
I can't test it, but this should be the modified linux 0.31.25 memory layout:It works.
uh... so will this newest version not work with the version of DF released last March, v 0.32? dang.
Shishimaru, any chance you could get the animal's properties to show - like size/muscle etc?I will try, but I don't know where to find the size. I'm doing some research.
uh... so will this newest version not work with the version of DF released last March, v 0.32? dang.The version of DF released last March is v 0.31.25
I have made a clone of Dwarf Therapist with some added features:
- a tab with the list of the tamed creatures and the possibility to set which of them have to be butchered (it should work with any mod because reads the races names from the raw)
- reenabled and expanded the reading of the physical attributes (strength, agility, toughness, endurance, recuperation, disease resistance). The description of the attribute should match the in game description with any mod (it reads the attributes mean values from the raws)
- age of the selected creature
- group by caste (it should work with any mod because reads the caste names from the raws)
- group by race (for the dwarf it shows dwarf, baby, child)
I have modified the Windows layout for 31.25 graphic version only, so it will not work on any other version for now.
Anyone interested in it can get the source of this clone here:
hg clone https://code.google.com/r/shishimar-dwarftherapist/
or download the compiled version here:
http://dffd.wimbli.com/file.php?id=5130
PS
There is anyone out there that knows how and where the pasture zones are codified in the DF memory?
You could say that it's supported, but I'm not even looking at the code.
Peter, YOU could write an AAA game without looking at the code, so that's not saying much. ;)
When I try to run DwarfTherapist.exe from a Visual Basic application, it immediately closes after starting... Do you know what may cause it?
Has anyone ever run into a problem where the dwarf surnames are all listed as "Unknownunknown"? It gets their first names but not the last.From what I've seen myself, the Unknownunknown happens when you start DT before the fort is loaded into the computers memory, have you tried starting DT after you have loaded up your fort?
Just reinstalled Lazy Newb Pack from scratch and it says "Connected to unknown version" in the lower right, which I'm assuming is related.
Not saying they're bad feature requests or anything, but you can kinda manage one of them. Also, from what I understand, feature requests are better left to the dedicated project forum, which you can find a link to in the first post of this thread. That might be a memory from when chmod was doing it, though. DwarfEngineer might do things differently.It's pretty much just a holdover, considering that the most recent posts are from 9 months ago and over 1 year ago respectively.
I'm going to start digging at it from the OS X side sometime this week. Anything I work out may be transferable to at least the Linux version.
I'm going to start digging at it from the OS X side sometime this week. Anything I work out may be transferable to at least the Linux version.
So DwarfEngineer has gone AWOL? That's bad. This tool basically takes the game from being a mess to being somewhat playable.
I can only hope to god that a new maintainer materialises, or I'm going to be stuck playing adventure mode.
Hi, DwarfEngineer here. I'm not the original author, but I'm currently the maintainer (or as close as there is.)
While I haven't had much free time for features or linux builds, I have been watching for the 2012 release and will try to get DT working with it. If anyone else gets to it before me and has questions, please send me a PM, I'm usually on reddit at least some the time of most days.
Also if anyone is interested in taking up maintenance full time, I'm more than willing to help them get to know the ropes. In fact it wouldn't hurt to have a few more people familiar with the program.
I'll be working on DT for 2012 as soon as I get a chance. It's highly likely that a number of the structures and offsets have changed, so I'm not optimistic that this will go quickly. Add on the fact that today is Valentine's day, and we're looking at end of the weekend as the earliest I'll have something.
Sorry there hasn't been much activity lately - I can't promise that I'll get to many features, but I'll do what I can to add support for the new version.
I'll be working on DT for 2012 as soon as I get a chance. It's highly likely that a number of the structures and offsets have changed, so I'm not optimistic that this will go quickly. Add on the fact that today is Valentine's day, and we're looking at end of the weekend as the earliest I'll have something.A god walks among mere mortals.
Sorry there hasn't been much activity lately - I can't promise that I'll get to many features, but I'll do what I can to add support for the new version.
I'll be working on DT for 2012 as soon as I get a chance. It's highly likely that a number of the structures and offsets have changed, so I'm not optimistic that this will go quickly. Add on the fact that today is Valentine's day, and we're looking at end of the weekend as the earliest I'll have something.
Sorry there hasn't been much activity lately - I can't promise that I'll get to many features, but I'll do what I can to add support for the new version.
I'll be working on DT for 2012 as soon as I get a chance. It's highly likely that a number of the structures and offsets have changed, so I'm not optimistic that this will go quickly. Add on the fact that today is Valentine's day, and we're looking at end of the weekend as the earliest I'll have something.
Sorry there hasn't been much activity lately - I can't promise that I'll get to many features, but I'll do what I can to add support for the new version.
There was a guy in this thread that forked and updated DT with some stuff, maybe he'll get around to looking into things if he's still here.
Woop! Thanks Dwarf Engineer, I really don't think I would have had the faintest idea what I was doing if I tried to fork it. I also agree with people saying that features aren't essential, we'll all just be happy to have a playable fort mode.
Nice find on the dwarf_race_index! How did you get 0x015cbe9c ? I was able to get the creature vector but got lost as to the next step.
Is there a reason why using the BruteForce (raw output) section on say 0x0213be9c (dwarf_race_index) reveals garbage instead of strings? Shouldn't the name & nick be viewable? There is data there and it appears to be structured, but just not in a human readable format.
struct dwarf {
char firstName[16];
char lastName[16];
}
struct dwarf {
char *firstName;
char *lastName;
}
55 72 69 73 74 00 00 00 00 00 00 00 00 00 00 00
4D 63 55 72 69 73 74 00 00 00 00 00 00 00 00 00
AA BB AA BB CC DD CC DD
So I am about as oblivious as physically possible to the arcane workings of programming, do the posts in the last couple pages represent significant headway towards getting it working properly, or is it just dabbling in interesting notes?
I'll be working on DT for 2012 as soon as I get a chance. It's highly likely that a number of the structures and offsets have changed, so I'm not optimistic that this will go quickly. Add on the fact that today is Valentine's day, and we're looking at end of the weekend as the earliest I'll have something.
Sorry there hasn't been much activity lately - I can't promise that I'll get to many features, but I'll do what I can to add support for the new version.
For what little help it is to DwarfEngineer, I've been mucking around with DT and a memory viewer all afternoon and have been able to figure out the following:
checksum is 0x4f391a33
creature_vector is 0x0179f728
dwarf_race_index seems to be 465/0x1d1 (value in the .ini I've used is 0x015cbe9c, but I don't quite understand how it's determined where this value specifically comes from)
With these, DT is able to read all of my dwarves and their first names or nicknames correctly, last names still show up as "Unknownunknown". Sex appears to read correctly (all of my dwarves are correct, at least), and custom professions are read properly too.
I haven't been able to figure out any other values, hopefully these can make it at least a bit easier.
I would kill for even a basic Therapist right now... I just got a wave of 30 Dwarves!!!
total_words_per_table = 2173
expected_dwarf_race = 465
[info]
checksum=0x4f391a33
version_name=v0.34.01 (graphics)
[addresses]
translation_vector=0x017e3638
language_vector=0x017e3618
creature_vector=0x0179f728
dwarf_race_index=0x015cbe9c
squad_vector=0x0000000
[info]
checksum=0x4f391a33
version_name=v0.34.01 (graphics)
[addresses]
translation_vector=0x017e3638
language_vector=0x017e3618
creature_vector=0x0179f728
dwarf_race_index=0x015cbe9c
squad_vector=0x0
[offsets]
word_table=0x0000003c
string_buffer_offset=0x0000
[word_offsets]
base=0x0000
noun_singular=0x001C
noun_plural=0x0038
adjective=0x0054
verb=0x008C
present_simple_verb=0x00A8
past_simple_verb=0x00C4
past_participle_verb=0x00E0
present_participle_verb=0x00FC
[dwarf_offsets]
first_name=0x0000
nick_name=0x001C
last_name=0x0038
custom_profession=0x006C
profession=0x0088
race=0x008C
flags1=0x00E0
flags2=0x00E4
sex=0x00F8
id=0x00FC
recheck_equipment=0x01BC
birth_year=0x0224
current_job=0x02F4
physical_attrs=0x3C4
states=0x0528
souls=0x0648
likes=0x07A0
labors=0x078C
happiness=0x0710
squad_ref_id=0x790
[soul_details]
skills=0x01F0
traits=0x0214
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x003C
members=0x0088
[position_offsets]
token=0x0000
flags=0x0020
general_name_singular=0x00E8
general_name_plural=0x0104
male_name_singular=0x0158
male_name_plural=0x0174
female_name_singluar=0x0120
female_name_plural=0x013C
custom_color_red=0x0382
custom_color_green=0x0380
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
I'm looking to get current_job figured out, at least. profession and happiness would be nice, too.
I believe happiness is 0x082c and current job is 0x030c. I am working on some of the rest, I will keep posting what I find as well
Edit: I got enabled labours working. Here's my v0.34.01_graphics.ini file, it will give what I would call a very basic level of actual functionality to DT - you can manage your dwarves' enabled labours, at least, though you cannot see their skill level, current job, or happiness
I learned to play the game with Therapist. I know how to change jobs without it, but I certainly don't want to do it all by hand. It would take forever with dozens of dorfs, I usually only tweak one or two at a time manually.
I learned to play the game with Therapist. I know how to change jobs without it, but I certainly don't want to do it all by hand. It would take forever with dozens of dorfs, I usually only tweak one or two at a time manually.
See my post above - if you just deal with them when they arrive and then never touch them again, it's actually very little time required. As long as you setup your job types well, you can basically just "set and forget".
Whích ís fíne as long as everýbodý ís stíll alíve.
Once people start dýíng and ýou have to choose and appoínt replacements, ít gets reallý messý.
The level of misery I hear here (and feel personally, fair readers), makes me wonder if it might not be time for another rousing game of "Toady, please integrate DT into DF."
For the record, it's been asked . . . a lot. I don't recall if Toady has ever commented on it. Logically, since it never happened, perhaps that is his comment. Ah well, we shall endure. Good advice from Schismatise, thought that system does fall apart with the first deaths, as noted.
http://www.bay12forums.com/smf/eternal_voting.php
the eternal suggestion voting doesn't show any sign of players actually wanting a better job assignment screen.
Actually....http://www.bay12forums.com/smf/eternal_voting.php
the eternal suggestion voting doesn't show any sign of players actually wanting a better job assignment screen.
That's probably because they're perfectly happy with dwarf therapist ;)
That said, i'm gonna go take a look at that link.
yes I saw that. this part of my original comment:Actually....http://www.bay12forums.com/smf/eternal_voting.php
the eternal suggestion voting doesn't show any sign of players actually wanting a better job assignment screen.
That's probably because they're perfectly happy with dwarf therapist ;)
That said, i'm gonna go take a look at that link.
Number 13: Integrated Dwarf Foreman...
Links to here.
http://www.bay12forums.com/smf/index.php?topic=53113.0
yes I saw that. this part of my original comment:
Edit: I got enabled labours working. Here's my v0.34.01_graphics.ini file, it will give what I would call a very basic level of actual functionality to DT - you can manage your dwarves' enabled labours, at least, though you cannot see their skill level, current job, or happiness
I think I've missed something fundamental. I've got DT sitting here (as it happens the OSX versions) and it's a monolith - a single executable file. Where do I put the <field>=<value> and ini files??
http://www.bay12forums.com/smf/eternal_voting.php
the eternal suggestion voting doesn't show any sign of players actually wanting a better job assignment screen.
want to make a point? bring that 'Integrated Dwarf Foreman' item to first. then you may have a point.
To be fair, the stuff on top of that list isn't done either and integrating DT will seem like a much lower priority when the new version of DT is out.The level of misery I hear here (and feel personally, fair readers), makes me wonder if it might not be time for another rousing game of "Toady, please integrate DT into DF."
For the record, it's been asked . . . a lot. I don't recall if Toady has ever commented on it. Logically, since it never happened, perhaps that is his comment. Ah well, we shall endure. Good advice from Schismatise, thought that system does fall apart with the first deaths, as noted.
you're not being very vocal:
http://www.bay12forums.com/smf/eternal_voting.php
the eternal suggestion voting doesn't show any sign of players actually wanting a better job assignment screen.
want to make a point? bring that 'Integrated Dwarf Foreman' item to first. then you may have a point.
I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|
I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|
I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|
I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.I'm very aware of the importance of DT to the community. If there was a way I could make DwarfTherapist my fulltime job, I would in a heartbeat. Unfortunately the pay isn't quite enough to support a family, let alone my cat. I could start ransoming releases, but I don't think that would be a very popular decision :)
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|
So, do I need the legacy.ini file settings for 34.01 to get the graphics.ini to work, or will it be fine without the legacy.ini file ?
Will creating a new file named correctly give us a working Dwarf Therapist for assigning tasks ?
My experience with this was copying/pasting some code about a year ago to get 31.21 to work the day of the release.
I think I've missed something fundamental. I've got DT sitting here (as it happens the OSX versions) and it's a monolith - a single executable file. Where do I put the <field>=<value> and ini files??
I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|
[info]
checksum=0x4f391a33
version_name=v0.34.01 (graphics)
[addresses]
translation_vector=0x017e3638
language_vector=0x017e3618
creature_vector=0x0179f728
dwarf_race_index=0x015cbe9c
squad_vector=0x0
[offsets]
word_table=0x0000003c
string_buffer_offset=0x0000
[word_offsets]
base=0x0000
noun_singular=0x001C
noun_plural=0x0038
adjective=0x0054
verb=0x008C
present_simple_verb=0x00A8
past_simple_verb=0x00C4
past_participle_verb=0x00E0
present_participle_verb=0x00FC
[dwarf_offsets]
first_name=0x0000
nick_name=0x001C
last_name=0x0038
custom_profession=0x006C
profession=0x0088
race=0x008C
flags1=0x00E0
flags2=0x00E4
sex=0x00F8
id=0x00FC
recheck_equipment=0x01BC
birth_year=0x0224
current_job=0x030C
physical_attrs=0x3DC
states=0x0644
souls=0x0768
likes=0x07A0
labors=0x078C
happiness=0x082C
squad_ref_id=0x790
[soul_details]
skills=0x01F0
traits=0x0214
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x003C
members=0x0088
[position_offsets]
token=0x0000
flags=0x0020
general_name_singular=0x00E8
general_name_plural=0x0104
male_name_singular=0x0158
male_name_plural=0x0174
female_name_singluar=0x0120
female_name_plural=0x013C
custom_color_red=0x0382
custom_color_green=0x0380
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|
I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|
Are there donation for DT (and possibly other DF projects)?I was thinking of putting up a tip jar with the intention of funding a mac mini to start adding OSX support. I won't do it until after the first release for DF2012 however.
I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|
I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|
No shit.I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|
Go back to minecraft, they seem to respond better to demands. If this has worked will for you before to get something out of someone, where the hell do you live and who the fuck do you think you are?
Back on topic: I appreciate all that are working on this, nothing but kind inspiration coming from me. Anyone that posts like him should just be ignored, DE you have more patient and considerate followers then assholes backing you up. Take your time! I believe I speak for everyone that isn't demanding that we patiently await your update, even if it was a month away.
Minecraft is just a distilled version of DF.No shit.I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|
Go back to minecraft, they seem to respond better to demands. If this has worked will for you before to get something out of someone, where the hell do you live and who the fuck do you think you are?
Back on topic: I appreciate all that are working on this, nothing but kind inspiration coming from me. Anyone that posts like him should just be ignored, DE you have more patient and considerate followers then assholes backing you up. Take your time! I believe I speak for everyone that isn't demanding that we patiently await your update, even if it was a month away.
Minecraft was originally going to be a Survival Game. Now its Lego with Monsters.
Keep up the Good Work, DwarfEngineer!
Your Work is Important, but perhaps more pertinently, much appreciated. And Im sure I can say that not only for Myself, but for plenty of folks :)
Why, because You can Dig?Minecraft is just a distilled version of DF.No shit.I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|
Go back to minecraft, they seem to respond better to demands. If this has worked will for you before to get something out of someone, where the hell do you live and who the fuck do you think you are?
Back on topic: I appreciate all that are working on this, nothing but kind inspiration coming from me. Anyone that posts like him should just be ignored, DE you have more patient and considerate followers then assholes backing you up. Take your time! I believe I speak for everyone that isn't demanding that we patiently await your update, even if it was a month away.
Minecraft was originally going to be a Survival Game. Now its Lego with Monsters.
Keep up the Good Work, DwarfEngineer!
Your Work is Important, but perhaps more pertinently, much appreciated. And Im sure I can say that not only for Myself, but for plenty of folks :)
I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|
We are derailing but why not.
I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|*Implying that OP is still working on this.*(Heck, thought this was the really old thread... oh well.)
*Implying that it is someone's full time job to work on this, even on Valentine's Day.*
*Implying that it is rude for the current maintainer of DT to not elaborate why he can't work on it as much as you'd like.*
*Implying that the current maintainer does not know how many players are reliant on DT to play.*
*Implying that you can make demands of someone who volunteers their free time to do this, for you, without compensation.*
Suck it up, another week or two won't kill you.
I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|
I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|
That's a pretty disgusting attitude to something that is given for free to the community, and takes a serious amount of time and effort to bring around. I hope you feel ashamed now that every second post after yours is pretty much condemning your attitude.
Remembering some of the reasons that Chmod decided to hand over the reins of Therapist - thank you DwarfEngineer for all your hard work.
I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|
Its not his job, nor his responsibility to provide you with a free thing that helps you. He does it out of the goodness of his heart, and you should be grateful instead of whining like a child who didn't get everything they wanted on Christmas.
Luckly I have been able to run it with the basic (and thankfully the most useful) functionalities such as add/remove professions and list the dwarves.What do you mean ?
But somehow from time to time it freezes during the Loading Dwarfs state (about 6%, 9% and at first at 33%). I don't know what could cause that, but it's annoying.
Anyhow, all of my thanks and support to DwarfEngineer!
Code: [Select][info]
checksum=0x4f391a33
version_name=v0.34.01 (graphics)
[addresses]
translation_vector=0x017e3638
language_vector=0x017e3618
creature_vector=0x0179f728
dwarf_race_index=0x015cbe9c
squad_vector=0x0
[offsets]
word_table=0x0000003c
string_buffer_offset=0x0000
[word_offsets]
base=0x0000
noun_singular=0x001C
noun_plural=0x0038
adjective=0x0054
verb=0x008C
present_simple_verb=0x00A8
past_simple_verb=0x00C4
past_participle_verb=0x00E0
present_participle_verb=0x00FC
[dwarf_offsets]
first_name=0x0000
nick_name=0x001C
last_name=0x0038
custom_profession=0x006C
profession=0x0088
race=0x008C
flags1=0x00E0
flags2=0x00E4
sex=0x00F8
id=0x00FC
recheck_equipment=0x01BC
birth_year=0x0224
current_job=0x030C
physical_attrs=0x3DC
states=0x0644
souls=0x0768
likes=0x07A0
labors=0x078C
happiness=0x082C
squad_ref_id=0x790
[soul_details]
skills=0x01F0
traits=0x0214
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x003C
members=0x0088
[position_offsets]
token=0x0000
flags=0x0020
general_name_singular=0x00E8
general_name_plural=0x0104
male_name_singular=0x0158
male_name_plural=0x0174
female_name_singluar=0x0120
female_name_plural=0x013C
custom_color_red=0x0382
custom_color_green=0x0380
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
Luckly I have been able to run it with the basic (and thankfully the most useful) functionalities such as add/remove professions and list the dwarves.What do you mean ?
But somehow from time to time it freezes during the Loading Dwarfs state (about 6%, 9% and at first at 33%). I don't know what could cause that, but it's annoying.
Anyhow, all of my thanks and support to DwarfEngineer!
You're testing last version of DT ?
I don't think OP realizes that THOUSANDS OF PEOPLE ARE RELYING ON HIM TO HURRY THE HECK UP to allow them to play this.
"I don't have much time" without stating a reason is just rude. Adventure mode is still too dull for me and Dwarf Mode is virtually unplayable without this mods help. :|
Apart that, DwarfEngineer, can you just tell us if it's a question of days, weeks or even months ?Days. I will have some time tonight, and if all goes well, might even have a preliminary release. Otherwise, this weekend is when I'll have a serious chunk of time to work on it. Given that we've found a lot of the major offsets, I'm optimistic that I'll have something in the Friday/Saturday timeframe. I'd really like to get it done by Friday because I know people will be looking forward to burrowing in for the weekend and playing some serious DF'12. (I know I am)
Apart that, DwarfEngineer, can you just tell us if it's a question of days, weeks or even months ?Days. I will have some time tonight, and if all goes well, might even have a preliminary release. Otherwise, this weekend is when I'll have a serious chunk of time to work on it. Given that we've found a lot of the major offsets, I'm optimistic that I'll have something in the Friday/Saturday timeframe. I'd really like to get it done by Friday because I know people will be looking forward to burrowing in for the weekend and playing some serious DF'12. (I know I am)
[dwarf_offsets]
souls=0x0764
[soul_details]
skills=0x0200
traits=0x0224
[info]
checksum=0x4f391a33
version_name=v0.34.01 (graphics)
complete=true
[addresses]
translation_vector=0x017e3638
language_vector=0x017e3618
creature_vector=0x0179f728
dwarf_race_index=0x015cbe9c
squad_vector=0x0
[offsets]
word_table=0x0000003c
string_buffer_offset=0x0000
[word_offsets]
base=0x0000
noun_singular=0x001C
noun_plural=0x0038
adjective=0x0054
verb=0x008C
present_simple_verb=0x00A8
past_simple_verb=0x00C4
past_participle_verb=0x00E0
present_participle_verb=0x00FC
[dwarf_offsets]
first_name=0x0000
nick_name=0x001C
last_name=0x0038
custom_profession=0x006C
profession=0x0088
race=0x008C
flags1=0x00E0
flags2=0x00E4
sex=0x00F8
id=0x00FC
recheck_equipment=0x01BC
birth_year=0x0224
current_job=0x030c
physical_attrs=0x3C4
states=0x0528
souls=0x0764
likes=0x07A0
labors=0x078c
happiness=0x082c
squad_ref_id=0x790
[soul_details]
skills=0x0200
traits=0x0224
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x003C
members=0x0088
[position_offsets]
token=0x0000
flags=0x0020
general_name_singular=0x00E8
general_name_plural=0x0104
male_name_singular=0x0158
male_name_plural=0x0174
female_name_singluar=0x0120
female_name_plural=0x013C
custom_color_red=0x0382
custom_color_green=0x0380
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
Days. I will have some time tonight, and if all goes well, might even have a preliminary release. Otherwise, this weekend is when I'll have a serious chunk of time to work on it. Given that we've found a lot of the major offsets, I'm optimistic that I'll have something in the Friday/Saturday timeframe. I'd really like to get it done by Friday because I know people will be looking forward to burrowing in for the weekend and playing some serious DF'12. (I know I am)
@dyn
does this mean I can use an old version of DT when replacing the respective parts with what you posted?
Finally, I found the soul offsets. These changes should allow DT to show all the traits and skill experience.Code: [Select][dwarf_offsets]
souls=0x0764
[soul_details]
skills=0x0200
traits=0x0224
For the OS X users:
If you right-click the app and click "Show Package Contents", you can click through to Contents\Resources\etc. The ini files for the offsets live there. Unfortunately I'm in the middle of a sprint at work, so I probably won't have time to test offsets on the OS X side until after work tonight.
So let's say that with dyn's .ini everything was working just great (souls! yay!) but then a fucking migration wave of 3 dwarves (can 3 dwarves actually be called a migration wave? it'd be more like switching homes or whatever) fucked up and DT now just freezes every time I run it.
Dang.
P.S.: Is there a way to debug DT to know where is exactly the loading failing?
For the OS X users:
If you right-click the app and click "Show Package Contents", you can click through to Contents\Resources\etc. The ini files for the offsets live there. Unfortunately I'm in the middle of a sprint at work, so I probably won't have time to test offsets on the OS X side until after work tonight.
See - I knew there was an easy answer and I was just dumb.
I'm so glad the DF community is made out of some really smart people. It's great to follow the research on DT and to see every little news on what people find out on the matter.
You make me smile. You give me hope DT will be fixed earlier than we thought.
Thanks for all your dedication, glad we have skilled people here!
For the OS X users:
If you right-click the app and click "Show Package Contents", you can click through to Contents\Resources\etc. The ini files for the offsets live there. Unfortunately I'm in the middle of a sprint at work, so I probably won't have time to test offsets on the OS X side until after work tonight.
See - I knew there was an easy answer and I was just dumb.
is there a doc someplace on the structure of ini files for DT? I observe that the structure of the ini files are different for windows vs osx.
Windows:
a <version>_legacy.ini and a <version>_graphics.ini file for each release
osx:
just a single <version>.ini file for each release.
Is the windows structure to support legacy versions of DT, or do I somehow need to have both?
Also - I've got a mac (clearly), and I can read hex - so I'm happy to go looking for the mac-specific offsets myself if someone can point me to a guide for how you identify what you're looking for in the core...surely you're not just randomly guessing memory addresses....
total_words_per_table = 2173
expected_dwarf_race = 465
[info]
checksum=0xXXXXXXXX
version_name=v0.34.01 (graphics)
complete=false
[addresses]
translation_vector=0x0
language_vector=0x0
creature_vector=0x0
dwarf_race_index=0x0
squad_vector=0x0
2012-Feb-15 15:30:51.231 DEBUG core PTR 13734bf "" [bin/release/../../../dwarftherapist/inc/dwarfraceindexsearchjob.h:77] (go)
2012-Feb-15 15:30:51.231 DEBUG core MATCH! offset 46 2e [bin/release/../../../dwarftherapist/inc/dwarfraceindexsearchjob.h:80] (go)
2012-Feb-15 15:30:51.231 DEBUG core READ ADDR FROM 13734ed = 252be9c [bin/release/../../../dwarftherapist/inc/dwarfraceindexsearchjob.h:82] (go)
2012-Feb-15 15:30:51.231 DEBUG core RACE VALUE 465 HEX 1d1 [bin/release/../../../dwarftherapist/inc/dwarfraceindexsearchjob.h:84] (go)
2012-Feb-15 15:30:51.231 DEBUG core PTR 13736eb "" [bin/release/../../../dwarftherapist/inc/dwarfraceindexsearchjob.h:77] (go)
2012-Feb-15 15:30:51.231 DEBUG core MATCH! offset 31 1f [bin/release/../../../dwarftherapist/inc/dwarfraceindexsearchjob.h:80] (go)
2012-Feb-15 15:30:51.231 DEBUG core READ ADDR FROM 137370a = 252be9c [bin/release/../../../dwarftherapist/inc/dwarfraceindexsearchjob.h:82] (go)
2012-Feb-15 15:30:51.231 DEBUG core RACE VALUE 465 HEX 1d1 [bin/release/../../../dwarftherapist/inc/dwarfraceindexsearchjob.h:84] (go)
2012-Feb-15 15:30:51.231 DEBUG core PTR 15558c6 "" [bin/release/../../../dwarftherapist/inc/dwarfraceindexsearchjob.h:77] (go)
2012-Feb-15 15:30:51.231 DEBUG core MATCH! offset 28 1c [bin/release/../../../dwarftherapist/inc/dwarfraceindexsearchjob.h:80] (go)
2012-Feb-15 15:30:51.231 DEBUG core READ ADDR FROM 15558e2 = 252be9c [bin/release/../../../dwarftherapist/inc/dwarfraceindexsearchjob.h:82] (go)
2012-Feb-15 15:30:51.231 DEBUG core RACE VALUE 465 HEX 1d1 [bin/release/../../../dwarftherapist/inc/dwarfraceindexsearchjob.h:84] (go)
2012-Feb-15 15:30:51.231 DEBUG core PTR 19b0537 "" [bin/release/../../../dwarftherapist/inc/dwarfraceindexsearchjob.h:77] (go)
2012-Feb-15 15:30:51.231 DEBUG core MATCH! offset 25 19 [bin/release/../../../dwarftherapist/inc/dwarfraceindexsearchjob.h:80] (go)
2012-Feb-15 15:30:51.231 DEBUG core READ ADDR FROM 19b0550 = 252be9c [bin/release/../../../dwarftherapist/inc/dwarfraceindexsearchjob.h:82] (go)
2012-Feb-15 15:30:51.231 DEBUG core RACE VALUE 465 HEX 1d1 [bin/release/../../../dwarftherapist/inc/dwarfraceindexsearchjob.h:84] (go)
2012-Feb-15 15:30:51.231 DEBUG core READ ADDR FROM 19b0550 = [color=red]252be9c[/color][bin/release/../../../dwarftherapist/inc/dwarfraceindexsearchjob.h:82] (go)
2012-Feb-15 15:30:49.001 DEBUG core base address: "0x01360000" [../dwarftherapist/src/dfinstancewindows.cpp:258] (find_running_copy)
2012-Feb-15 15:30:49.001 DEBUG core memory correction: "[color=red]0x00f60000[/color]" [../dwarftherapist/src/dfinstancewindows.cpp:259] (find_running_copy)
Hmmm... so using the modified .ini, everything loads and appears to be working right, however I might have run in to a small problem.
I have the habit of assigning everyone to do mining until the basic layout of the first floor is done so everyone can have shelter and all items and food can be put away. Well, I assigned everyone via DT, committed changes, and unpaused DF... Nothing. Just my two miners from before whittling away while everyone else sets on their thumbs.
I check; we have 7 pickaxes, everyone has 'mining' set in game. Huh. I manually turned their mining off and on, unpaused, and OFF to work they go!!
So yeah, not sure if they are actually doing the jobs they get assigned in DT or not, but I had to manually un-switch then re-switch them in DF for it to work.
Hmmm... so using the modified .ini, everything loads and appears to be working right, however I might have run in to a small problem.
I have the habit of assigning everyone to do mining until the basic layout of the first floor is done so everyone can have shelter and all items and food can be put away. Well, I assigned everyone via DT, committed changes, and unpaused DF... Nothing. Just my two miners from before whittling away while everyone else sets on their thumbs.
I check; we have 7 pickaxes, everyone has 'mining' set in game. Huh. I manually turned their mining off and on, unpaused, and OFF to work they go!!
So yeah, not sure if they are actually doing the jobs they get assigned in DT or not, but I had to manually un-switch then re-switch them in DF for it to work.
2012-Feb-16 11:00:08.253 INFO core Dwarf Therapist "0.6.10" starting normally. [../dwarftherapist/src/dwarftherapist.cpp:100] (setup_logging)
2012-Feb-16 11:00:08.332 INFO core Loaded 4 views from disk [../dwarftherapist/src/viewmanager.cpp:126] (reload_views)
2012-Feb-16 11:00:08.365 DEBUG core "redrew views in 33ms" [../dwarftherapist/src/viewmanager.cpp:158] (draw_views)
2012-Feb-16 11:00:08.368 DEBUG core setting up connections for MainWindow [../dwarftherapist/src/mainwindow.cpp:116] (MainWindow)
2012-Feb-16 11:00:08.370 DEBUG core group_by now set to 0 [../dwarftherapist/src/models/dwarfmodel.cpp:435] (set_group_by)
2012-Feb-16 11:00:08.370 DEBUG core beginning to read settings [../dwarftherapist/src/dwarftherapist.cpp:122] (read_settings)
2012-Feb-16 11:00:08.371 DEBUG core finished reading settings [../dwarftherapist/src/dwarftherapist.cpp:168] (read_settings)
2012-Feb-16 11:00:08.483 DEBUG core attempting connection to running DF game [../dwarftherapist/src/mainwindow.cpp:225] (connect_to_df)
2012-Feb-16 11:00:08.492 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.492 DEBUG core adding valid layout "v0.34.01 (graphics)" "0x4f391a33" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.493 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.493 DEBUG core adding valid layout "v0.31.21 (legacy)" "0x4d743206" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.494 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.494 DEBUG core adding valid layout "v0.31.21 (graphics)" "0x4d743da7" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.495 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.495 DEBUG core adding valid layout "v0.31.20 (legacy)" "0x4d72f10d" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.496 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.496 DEBUG core adding valid layout "v0.31.20 (graphics)" "0x4d734fb5" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.497 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.497 DEBUG core adding valid layout "v0.31.19 (legacy)" "0x4d5b9f3c" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.498 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.498 DEBUG core adding valid layout "v0.31.19 (graphics)" "0x4d5bc345" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.499 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.499 DEBUG core adding valid layout "v0.31.18 (legacy)" "0x4ce278c2" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.500 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.500 DEBUG core adding valid layout "v0.31.18 (graphics)" "0x4ce2841d" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.500 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.500 DEBUG core adding valid layout "v0.31.17 (legacy)" "0x4cdc0c76" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.501 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.501 DEBUG core adding valid layout "v0.31.17 (graphics)" "0x4cdc27a0" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.502 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.502 DEBUG core adding valid layout "v0.31.16 (legacy)" "0x4ca9c859" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.503 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.503 DEBUG core adding valid layout "v0.31.16 (graphics)" "0x4ca9d544" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.504 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.504 DEBUG core adding valid layout "v0.31.15 (legacy)" "0x4ca859cd" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.505 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.505 DEBUG core adding valid layout "v0.31.15 (graphics)" "0x4ca869ea" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.506 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.506 DEBUG core adding valid layout "v0.31.14 (legacy)" "0x4c9b4c27" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.507 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.507 DEBUG core adding valid layout "v0.31.14 (graphics)" "0x4c9b6efb" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.507 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.508 DEBUG core adding valid layout "v0.31.13 (legacy)" "0x4c908b66" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.508 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.508 DEBUG core adding valid layout "v0.31.13 (graphics)" "0x4c90ada8" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.509 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.509 DEBUG core adding valid layout "v0.31.12 (legacy)" "0x4c4c1527" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.510 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.510 DEBUG core adding valid layout "v0.31.12 (graphics)" "0x4c4c32e7" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.511 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.511 DEBUG core adding valid layout "v0.31.11 (legacy)" "0x4c495d9f" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.512 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.512 DEBUG core adding valid layout "v0.31.11 (graphics)" "0x4c496d93" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.513 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.513 DEBUG core adding valid layout "v0.31.10 (legacy)" "0x4c397516" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.514 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.514 DEBUG core adding valid layout "v0.31.10 (graphics)" "0x4c398089" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.515 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.515 DEBUG core adding valid layout "v0.31.08 (legacy)" "0x4c1d60a0" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.516 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.516 DEBUG core adding valid layout "v0.31.08 (graphics)" "0x4c1d69fe" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.516 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.517 DEBUG core adding valid layout "v0.31.06 (legacy)" "0x4c0f6a01" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.517 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.517 DEBUG core adding valid layout "v0.31.06 (graphics)" "0x4c0f83d5" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.518 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.518 DEBUG core adding valid layout "v0.31.05 (legacy)" "0x4c090730" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.519 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.519 DEBUG core adding valid layout "v0.31.05 (graphics)" "0x4c091569" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.520 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.520 DEBUG core adding valid layout "v0.31.04 (legacy)" "0x4befdde5" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.521 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.521 DEBUG core adding valid layout "v0.31.04 (graphics)" "0x4bf014fa" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.522 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.522 DEBUG core adding valid layout "v0.31.03" "0x4bc3c470" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.523 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.523 DEBUG core adding valid layout "v0.31.02" "0x4bbdf378" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.524 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:08.524 DEBUG core adding valid layout "v0.31.01" "0x4bb45f99" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:08.524 ERROR core Skipping read of invalid memory layout in "C:/Users/Milnes/Desktop/DwarfTherapist-0.6.10/etc/memory_layouts/windows/.ini" [../dwarftherapist/src/memorylayout.cpp:39] (load_data)
2012-Feb-16 11:00:08.525 DEBUG core attempting to find running copy of DF by window handle [../dwarftherapist/src/dfinstancewindows.cpp:186] (find_running_copy)
2012-Feb-16 11:00:09.658 INFO core RUNNING VERSION : "0.6.10" [../dwarftherapist/src/mainwindow.cpp:382] (version_check_finished)
2012-Feb-16 11:00:09.658 INFO core LATEST AVAILABLE VERSION: "0.6.4" [../dwarftherapist/src/mainwindow.cpp:383] (version_check_finished)
2012-Feb-16 11:00:10.072 WARNING core can't find running copy [../dwarftherapist/src/dfinstancewindows.cpp:199] (find_running_copy)
2012-Feb-16 11:00:34.904 DEBUG core attempting connection to running DF game [../dwarftherapist/src/mainwindow.cpp:225] (connect_to_df)
2012-Feb-16 11:00:34.904 DEBUG core already connected, disconnecting [../dwarftherapist/src/mainwindow.cpp:227] (connect_to_df)
2012-Feb-16 11:00:34.904 DEBUG core DFInstance baseclass virtual dtor! [../dwarftherapist/src/dfinstance.cpp:110] (~DFInstance)
2012-Feb-16 11:00:34.912 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.912 DEBUG core adding valid layout "v0.34.01 (graphics)" "0x4f391a33" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.912 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.913 DEBUG core adding valid layout "v0.31.21 (legacy)" "0x4d743206" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.913 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.913 DEBUG core adding valid layout "v0.31.21 (graphics)" "0x4d743da7" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.914 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.914 DEBUG core adding valid layout "v0.31.20 (legacy)" "0x4d72f10d" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.914 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.914 DEBUG core adding valid layout "v0.31.20 (graphics)" "0x4d734fb5" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.915 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.915 DEBUG core adding valid layout "v0.31.19 (legacy)" "0x4d5b9f3c" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.916 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.916 DEBUG core adding valid layout "v0.31.19 (graphics)" "0x4d5bc345" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.916 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.916 DEBUG core adding valid layout "v0.31.18 (legacy)" "0x4ce278c2" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.916 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.916 DEBUG core adding valid layout "v0.31.18 (graphics)" "0x4ce2841d" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.917 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.917 DEBUG core adding valid layout "v0.31.17 (legacy)" "0x4cdc0c76" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.917 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.917 DEBUG core adding valid layout "v0.31.17 (graphics)" "0x4cdc27a0" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.918 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.918 DEBUG core adding valid layout "v0.31.16 (legacy)" "0x4ca9c859" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.918 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.918 DEBUG core adding valid layout "v0.31.16 (graphics)" "0x4ca9d544" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.919 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.919 DEBUG core adding valid layout "v0.31.15 (legacy)" "0x4ca859cd" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.920 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.920 DEBUG core adding valid layout "v0.31.15 (graphics)" "0x4ca869ea" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.920 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.920 DEBUG core adding valid layout "v0.31.14 (legacy)" "0x4c9b4c27" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.921 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.921 DEBUG core adding valid layout "v0.31.14 (graphics)" "0x4c9b6efb" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.921 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.921 DEBUG core adding valid layout "v0.31.13 (legacy)" "0x4c908b66" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.922 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.922 DEBUG core adding valid layout "v0.31.13 (graphics)" "0x4c90ada8" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.923 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.923 DEBUG core adding valid layout "v0.31.12 (legacy)" "0x4c4c1527" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.923 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.923 DEBUG core adding valid layout "v0.31.12 (graphics)" "0x4c4c32e7" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.924 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.924 DEBUG core adding valid layout "v0.31.11 (legacy)" "0x4c495d9f" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.924 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.924 DEBUG core adding valid layout "v0.31.11 (graphics)" "0x4c496d93" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.925 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.925 DEBUG core adding valid layout "v0.31.10 (legacy)" "0x4c397516" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.926 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.926 DEBUG core adding valid layout "v0.31.10 (graphics)" "0x4c398089" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.926 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.926 DEBUG core adding valid layout "v0.31.08 (legacy)" "0x4c1d60a0" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.927 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.927 DEBUG core adding valid layout "v0.31.08 (graphics)" "0x4c1d69fe" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.927 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.927 DEBUG core adding valid layout "v0.31.06 (legacy)" "0x4c0f6a01" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.928 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.928 DEBUG core adding valid layout "v0.31.06 (graphics)" "0x4c0f83d5" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.929 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.929 DEBUG core adding valid layout "v0.31.05 (legacy)" "0x4c090730" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.929 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.929 DEBUG core adding valid layout "v0.31.05 (graphics)" "0x4c091569" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.930 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.930 DEBUG core adding valid layout "v0.31.04 (legacy)" "0x4befdde5" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.930 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.930 DEBUG core adding valid layout "v0.31.04 (graphics)" "0x4bf014fa" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.931 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.931 DEBUG core adding valid layout "v0.31.03" "0x4bc3c470" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.931 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.932 DEBUG core adding valid layout "v0.31.02" "0x4bbdf378" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.932 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:00:34.932 DEBUG core adding valid layout "v0.31.01" "0x4bb45f99" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:00:34.932 ERROR core Skipping read of invalid memory layout in "C:/Users/Milnes/Desktop/DwarfTherapist-0.6.10/etc/memory_layouts/windows/.ini" [../dwarftherapist/src/memorylayout.cpp:39] (load_data)
2012-Feb-16 11:00:34.933 DEBUG core attempting to find running copy of DF by window handle [../dwarftherapist/src/dfinstancewindows.cpp:186] (find_running_copy)
2012-Feb-16 11:00:34.933 DEBUG core found copy with HWND: 0xa03c8 [../dwarftherapist/src/dfinstancewindows.cpp:202] (find_running_copy)
2012-Feb-16 11:00:34.933 DEBUG core PID of process is: 1752 [../dwarftherapist/src/dfinstancewindows.cpp:209] (find_running_copy)
2012-Feb-16 11:00:34.933 DEBUG core PROC HANDLE: 0x690 [../dwarftherapist/src/dfinstancewindows.cpp:217] (find_running_copy)
2012-Feb-16 11:00:34.933 DEBUG core PEB is at: 0x7ffdf000 [../dwarftherapist/src/dfinstancewindows.cpp:223] (find_running_copy)
2012-Feb-16 11:00:34.933 DEBUG core read 12 bytes BASE ADDR is at: 0x3a0000 [../dwarftherapist/src/dfinstancewindows.cpp:236] (find_running_copy)
2012-Feb-16 11:00:34.933 DEBUG core Target EXE was compiled at "2012-02-14T03:12:03" [../dwarftherapist/src/dfinstancewindows.cpp:70] (calculate_checksum)
2012-Feb-16 11:00:34.933 DEBUG core DF's checksum is: "0x4f391a33" [../dwarftherapist/src/dfinstance.cpp:653] (get_memory_layout)
2012-Feb-16 11:00:34.933 INFO core Detected Dwarf Fortress version "v0.34.01 (graphics)" using MemoryLayout from "C:/Users/Milnes/Desktop/DwarfTherapist-0.6.10/etc/memory_layouts/windows/v0.34.01_graphics.ini" [../dwarftherapist/src/dfinstance.cpp:665] (get_memory_layout)
2012-Feb-16 11:00:34.933 DEBUG core base address: "0x003a0000" [../dwarftherapist/src/dfinstancewindows.cpp:258] (find_running_copy)
2012-Feb-16 11:00:34.933 DEBUG core memory correction: "0xfffa0000" [../dwarftherapist/src/dfinstancewindows.cpp:259] (find_running_copy)
2012-Feb-16 11:00:34.937 DEBUG core MEMORY SEGMENT SUMMARY: accepted 342 rejected 100 total 442 [../dwarftherapist/src/dfinstancewindows.cpp:365] (map_virtual_memory)
2012-Feb-16 11:00:34.937 DEBUG core GetModuleFileNameEx returned: "C:\Users\Milnes\Desktop\df_34_01_win\Dwarf Fortress.exe" [../dwarftherapist/src/dfinstancewindows.cpp:272] (find_running_copy)
2012-Feb-16 11:00:34.937 INFO core Dwarf fortress path: "C:/Users/Milnes/Desktop/df_34_01_win" [../dwarftherapist/src/dfinstancewindows.cpp:275] (find_running_copy)
2012-Feb-16 11:00:34.940 DEBUG core Connection to unknown DF Version established. [../dwarftherapist/src/mainwindow.cpp:249] (connect_to_df)
2012-Feb-16 11:00:55.550 DEBUG core MEMORY SEGMENT SUMMARY: accepted 1 rejected 1 total 2 [../dwarftherapist/src/dfinstancewindows.cpp:365] (map_virtual_memory)
2012-Feb-16 11:01:15.545 DEBUG core MEMORY SEGMENT SUMMARY: accepted 1 rejected 1 total 2 [../dwarftherapist/src/dfinstancewindows.cpp:365] (map_virtual_memory)
2012-Feb-16 11:01:35.547 DEBUG core MEMORY SEGMENT SUMMARY: accepted 1 rejected 1 total 2 [../dwarftherapist/src/dfinstancewindows.cpp:365] (map_virtual_memory)
2012-Feb-16 11:01:55.555 DEBUG core MEMORY SEGMENT SUMMARY: accepted 1 rejected 1 total 2 [../dwarftherapist/src/dfinstancewindows.cpp:365] (map_virtual_memory)
2012-Feb-16 11:02:15.546 DEBUG core MEMORY SEGMENT SUMMARY: accepted 1 rejected 1 total 2 [../dwarftherapist/src/dfinstancewindows.cpp:365] (map_virtual_memory)
2012-Feb-16 11:02:35.552 DEBUG core MEMORY SEGMENT SUMMARY: accepted 1 rejected 1 total 2 [../dwarftherapist/src/dfinstancewindows.cpp:365] (map_virtual_memory)
2012-Feb-16 11:02:55.556 DEBUG core MEMORY SEGMENT SUMMARY: accepted 1 rejected 1 total 2 [../dwarftherapist/src/dfinstancewindows.cpp:365] (map_virtual_memory)
2012-Feb-16 11:03:15.541 DEBUG core MEMORY SEGMENT SUMMARY: accepted 1 rejected 1 total 2 [../dwarftherapist/src/dfinstancewindows.cpp:365] (map_virtual_memory)
2012-Feb-16 11:03:35.544 DEBUG core MEMORY SEGMENT SUMMARY: accepted 1 rejected 1 total 2 [../dwarftherapist/src/dfinstancewindows.cpp:365] (map_virtual_memory)
2012-Feb-16 11:03:55.554 DEBUG core MEMORY SEGMENT SUMMARY: accepted 1 rejected 1 total 2 [../dwarftherapist/src/dfinstancewindows.cpp:365] (map_virtual_memory)
2012-Feb-16 11:03:56.571 DEBUG core MEMORY SEGMENT SUMMARY: accepted 1 rejected 1 total 2 [../dwarftherapist/src/dfinstancewindows.cpp:365] (map_virtual_memory)
2012-Feb-16 11:03:56.571 WARNING core Active Memory Layout "C:/Users/Milnes/Desktop/DwarfTherapist-0.6.10/etc/memory_layouts/windows/v0.34.01_graphics.ini" ( "v0.34.01 (graphics)" ) contains an invalid creature_vector address. Either you are scanning a new DF version or your config files are corrupted. [../dwarftherapist/src/dfinstance.cpp:272] (load_dwarves)
2012-Feb-16 11:03:56.571 WARNING core Active Memory Layout "C:/Users/Milnes/Desktop/DwarfTherapist-0.6.10/etc/memory_layouts/windows/v0.34.01_graphics.ini" ( "v0.34.01 (graphics)" ) contains an invalid squad_vector address. Either you are scanning a new DF version or your config files are corrupted. [../dwarftherapist/src/dfinstance.cpp:344] (load_squads)
2012-Feb-16 11:03:56.571 WARNING core lost connection to DF [../dwarftherapist/src/mainwindow.cpp:295] (lost_df_connection)
2012-Feb-16 11:03:56.586 DEBUG core DFInstance baseclass virtual dtor! [../dwarftherapist/src/dfinstance.cpp:110] (~DFInstance)
2012-Feb-16 11:04:03.236 DEBUG core attempting connection to running DF game [../dwarftherapist/src/mainwindow.cpp:225] (connect_to_df)
2012-Feb-16 11:04:03.247 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.247 DEBUG core adding valid layout "v0.34.01 (graphics)" "0x4f391a33" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.248 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.248 DEBUG core adding valid layout "v0.31.21 (legacy)" "0x4d743206" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.249 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.249 DEBUG core adding valid layout "v0.31.21 (graphics)" "0x4d743da7" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.250 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.250 DEBUG core adding valid layout "v0.31.20 (legacy)" "0x4d72f10d" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.250 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.250 DEBUG core adding valid layout "v0.31.20 (graphics)" "0x4d734fb5" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.251 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.251 DEBUG core adding valid layout "v0.31.19 (legacy)" "0x4d5b9f3c" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.252 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.252 DEBUG core adding valid layout "v0.31.19 (graphics)" "0x4d5bc345" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.253 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.253 DEBUG core adding valid layout "v0.31.18 (legacy)" "0x4ce278c2" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.253 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.254 DEBUG core adding valid layout "v0.31.18 (graphics)" "0x4ce2841d" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.254 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.255 DEBUG core adding valid layout "v0.31.17 (legacy)" "0x4cdc0c76" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.255 DEBUG core valid_flags_2 count: 1 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.255 DEBUG core adding valid layout "v0.31.17 (graphics)" "0x4cdc27a0" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.256 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.256 DEBUG core adding valid layout "v0.31.16 (legacy)" "0x4ca9c859" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.257 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.257 DEBUG core adding valid layout "v0.31.16 (graphics)" "0x4ca9d544" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.258 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.258 DEBUG core adding valid layout "v0.31.15 (legacy)" "0x4ca859cd" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.259 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.259 DEBUG core adding valid layout "v0.31.15 (graphics)" "0x4ca869ea" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.260 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.260 DEBUG core adding valid layout "v0.31.14 (legacy)" "0x4c9b4c27" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.261 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.261 DEBUG core adding valid layout "v0.31.14 (graphics)" "0x4c9b6efb" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.262 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.262 DEBUG core adding valid layout "v0.31.13 (legacy)" "0x4c908b66" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.262 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.263 DEBUG core adding valid layout "v0.31.13 (graphics)" "0x4c90ada8" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.263 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.263 DEBUG core adding valid layout "v0.31.12 (legacy)" "0x4c4c1527" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.264 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.264 DEBUG core adding valid layout "v0.31.12 (graphics)" "0x4c4c32e7" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.265 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.265 DEBUG core adding valid layout "v0.31.11 (legacy)" "0x4c495d9f" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.266 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.266 DEBUG core adding valid layout "v0.31.11 (graphics)" "0x4c496d93" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.267 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.267 DEBUG core adding valid layout "v0.31.10 (legacy)" "0x4c397516" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.268 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.268 DEBUG core adding valid layout "v0.31.10 (graphics)" "0x4c398089" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.269 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.269 DEBUG core adding valid layout "v0.31.08 (legacy)" "0x4c1d60a0" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.269 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.270 DEBUG core adding valid layout "v0.31.08 (graphics)" "0x4c1d69fe" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.270 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.270 DEBUG core adding valid layout "v0.31.06 (legacy)" "0x4c0f6a01" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.271 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.271 DEBUG core adding valid layout "v0.31.06 (graphics)" "0x4c0f83d5" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.272 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.272 DEBUG core adding valid layout "v0.31.05 (legacy)" "0x4c090730" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.272 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.272 DEBUG core adding valid layout "v0.31.05 (graphics)" "0x4c091569" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.273 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.273 DEBUG core adding valid layout "v0.31.04 (legacy)" "0x4befdde5" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.273 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.273 DEBUG core adding valid layout "v0.31.04 (graphics)" "0x4bf014fa" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.274 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.274 DEBUG core adding valid layout "v0.31.03" "0x4bc3c470" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.275 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.275 DEBUG core adding valid layout "v0.31.02" "0x4bbdf378" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.275 DEBUG core valid_flags_2 count: 0 [../dwarftherapist/src/memorylayout.cpp:76] (load_data)
2012-Feb-16 11:04:03.275 DEBUG core adding valid layout "v0.31.01" "0x4bb45f99" [../dwarftherapist/src/dfinstance.cpp:95] (DFInstance)
2012-Feb-16 11:04:03.276 ERROR core Skipping read of invalid memory layout in "C:/Users/Milnes/Desktop/DwarfTherapist-0.6.10/etc/memory_layouts/windows/.ini" [../dwarftherapist/src/memorylayout.cpp:39] (load_data)
2012-Feb-16 11:04:03.276 DEBUG core attempting to find running copy of DF by window handle [../dwarftherapist/src/dfinstancewindows.cpp:186] (find_running_copy)
2012-Feb-16 11:04:03.276 DEBUG core found copy with HWND: 0x903c0 [../dwarftherapist/src/dfinstancewindows.cpp:202] (find_running_copy)
2012-Feb-16 11:04:03.276 DEBUG core PID of process is: 4704 [../dwarftherapist/src/dfinstancewindows.cpp:209] (find_running_copy)
2012-Feb-16 11:04:03.276 DEBUG core PROC HANDLE: 0x68c [../dwarftherapist/src/dfinstancewindows.cpp:217] (find_running_copy)
2012-Feb-16 11:04:03.276 DEBUG core PEB is at: 0x7ffd3000 [../dwarftherapist/src/dfinstancewindows.cpp:223] (find_running_copy)
2012-Feb-16 11:04:03.276 DEBUG core read 12 bytes BASE ADDR is at: 0xe70000 [../dwarftherapist/src/dfinstancewindows.cpp:236] (find_running_copy)
2012-Feb-16 11:04:03.276 DEBUG core Target EXE was compiled at "2012-02-14T03:12:03" [../dwarftherapist/src/dfinstancewindows.cpp:70] (calculate_checksum)
2012-Feb-16 11:04:03.276 DEBUG core DF's checksum is: "0x4f391a33" [../dwarftherapist/src/dfinstance.cpp:653] (get_memory_layout)
2012-Feb-16 11:04:03.276 INFO core Detected Dwarf Fortress version "v0.34.01 (graphics)" using MemoryLayout from "C:/Users/Milnes/Desktop/DwarfTherapist-0.6.10/etc/memory_layouts/windows/v0.34.01_graphics.ini" [../dwarftherapist/src/dfinstance.cpp:665] (get_memory_layout)
2012-Feb-16 11:04:03.276 DEBUG core base address: "0x00e70000" [../dwarftherapist/src/dfinstancewindows.cpp:258] (find_running_copy)
2012-Feb-16 11:04:03.276 DEBUG core memory correction: "0x00a70000" [../dwarftherapist/src/dfinstancewindows.cpp:259] (find_running_copy)
2012-Feb-16 11:04:03.291 DEBUG core MEMORY SEGMENT SUMMARY: accepted 362 rejected 108 total 470 [../dwarftherapist/src/dfinstancewindows.cpp:365] (map_virtual_memory)
2012-Feb-16 11:04:03.291 DEBUG core GetModuleFileNameEx returned: "C:\Users\Milnes\Desktop\df_34_01_win\Dwarf Fortress.exe" [../dwarftherapist/src/dfinstancewindows.cpp:272] (find_running_copy)
2012-Feb-16 11:04:03.291 INFO core Dwarf fortress path: "C:/Users/Milnes/Desktop/df_34_01_win" [../dwarftherapist/src/dfinstancewindows.cpp:275] (find_running_copy)
2012-Feb-16 11:04:03.292 DEBUG core Connection to unknown DF Version established. [../dwarftherapist/src/mainwindow.cpp:249] (connect_to_df)
2012-Feb-16 11:04:05.199 DEBUG core MEMORY SEGMENT SUMMARY: accepted 362 rejected 108 total 470 [../dwarftherapist/src/dfinstancewindows.cpp:365] (map_virtual_memory)
2012-Feb-16 11:04:05.199 DEBUG core loading creatures from "0x0220f728" "0x0179f728" (UNCORRECTED) [../dwarftherapist/src/dfinstance.cpp:287] (load_dwarves)
2012-Feb-16 11:04:05.199 DEBUG core dwarf race index "0x0203be9c" "0x015cbe9c" (UNCORRECTED) [../dwarftherapist/src/dfinstance.cpp:289] (load_dwarves)
2012-Feb-16 11:04:05.200 DEBUG core dwarf race: "0x000001d1" [../dwarftherapist/src/dfinstance.cpp:296] (load_dwarves)
Hmmm... so using the modified .ini, everything loads and appears to be working right, however I might have run in to a small problem.Just means that nobody has found the recheck_equipment offset yet :)
I have the habit of assigning everyone to do mining until the basic layout of the first floor is done so everyone can have shelter and all items and food can be put away. Well, I assigned everyone via DT, committed changes, and unpaused DF... Nothing. Just my two miners from before whittling away while everyone else sets on their thumbs.
I check; we have 7 pickaxes, everyone has 'mining' set in game. Huh. I manually turned their mining off and on, unpaused, and OFF to work they go!!
So yeah, not sure if they are actually doing the jobs they get assigned in DT or not, but I had to manually un-switch then re-switch them in DF for it to work.
Hmmm... so using the modified .ini, everything loads and appears to be working right, however I might have run in to a small problem.
I have the habit of assigning everyone to do mining until the basic layout of the first floor is done so everyone can have shelter and all items and food can be put away. Well, I assigned everyone via DT, committed changes, and unpaused DF... Nothing. Just my two miners from before whittling away while everyone else sets on their thumbs.
I check; we have 7 pickaxes, everyone has 'mining' set in game. Huh. I manually turned their mining off and on, unpaused, and OFF to work they go!!
So yeah, not sure if they are actually doing the jobs they get assigned in DT or not, but I had to manually un-switch then re-switch them in DF for it to work.
I seem to recall that this was a DT bug for a while back in DF2010 as well, where setting mining and woodcutting wouldn't appropriately flag the dwarf to go pick up its equipment. It was only a problem with those two, because they required tools. It was fixed, but I have no idea how. Most likely the new version has broken that fix again. Just one more thing to dig back out of memory.
DwarfEngineer, stevedore, dyn, thanks for all your work getting this thing back on its feet. You are good people.
Oh! This makes sense. There's a specific flag recheck_equipment that probably needs to be set for those jobs (now that I hear about this, that offset value suddenly makes sense), and we likely have the wrong offset for it. I'll look into that right now, actually. It should hopefully be a reasonably quick solution.
Oh! This makes sense. There's a specific flag recheck_equipment that probably needs to be set for those jobs (now that I hear about this, that offset value suddenly makes sense), and we likely have the wrong offset for it. I'll look into that right now, actually. It should hopefully be a reasonably quick solution.
Try recheck_equipment=0x01c0
I'm having trouble getting the ini working. Below are the steps I took.
Step 1: Downloaded and unzipped df_34_01_win.zip (the new SDL version of DF)
Step 2: Downloaded and unzipped Dwarf Therapist 6.10 off the link from the first post in this thread.
Step 3: Located Modified .INI file in thread http://www.bay12forums.com/smf/index.php?topic=66525.msg2990788#msg2990788 (http://www.bay12forums.com/smf/index.php?topic=66525.msg2990788#msg2990788)
Step 4: Created v0.34.01_graphics.ini file in "...DwarfTherapist-0.6.10\ect\memory_layouts\windows"
Step 5: Copied code from aforementioned post into v0.34.01_graphics.ini
Step 6: Ran Dwarf Fortress with New World
Step 7: Ran Dwarf Therapist which starts and then freezes while trying to read Dwarves.
Am I missing a critical step or am I just out of luck?
Here is my Run.logCode: [Select]code
Edit: Sorry, I posted the wrong log earlier, the above one is correct one.
I'm having trouble getting the ini working. Below are the steps I took.
Step 1: Downloaded and unzipped df_34_01_win.zip (the new SDL version of DF)
Step 2: Downloaded and unzipped Dwarf Therapist 6.10 off the link from the first post in this thread.
Step 3: Located Modified .INI file in thread http://www.bay12forums.com/smf/index.php?topic=66525.msg2990788#msg2990788 (http://www.bay12forums.com/smf/index.php?topic=66525.msg2990788#msg2990788)
Step 4: Created v0.34.01_graphics.ini file in "...DwarfTherapist-0.6.10\ect\memory_layouts\windows"
Step 5: Copied code from aforementioned post into v0.34.01_graphics.ini
Step 6: Ran Dwarf Fortress with New World
Step 7: Ran Dwarf Therapist which starts and then freezes while trying to read Dwarves.
Am I missing a critical step or am I just out of luck?
Here is my Run.logCode: [Select]code
Edit: Sorry, I posted the wrong log earlier, the above one is correct one.
Try restarting Dwarf Fortress. It's been the fix for a few people that have run into a similar problem.
Tried that 100 times already, no luck.
Seem to have discovered a nice lil memory leak though, Task Manager is reporting over 400,000k while trying to read dwarves.
ADDR | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | TEXT
------------------------------------------------------------------------
0x1650b900 | 46 49 4e 47 45 52 53 3a 52 43 50 5f 12 00 00 00 | FINGERS:RCP_12...
0x1650b910 | 1f 00 00 00 43 50 5f 32 53 4b 49 4e 00 3a 52 43 | 1f...CP_2SKIN.:RC
0x1650b920 | 50 5f 4e 4f 53 45 3a 52 04 00 00 00 0f 00 00 00 | P_NOSE:R04...0f...
0x1650b930 | 53 3a 52 43 00 5f 4c 55 4e 47 53 3a 52 43 50 5f | S:RC._LUNGS:RCP_
0x1650b940 | 48 45 41 52 00 00 00 00 0f 00 00 00 54 53 3a 52 | HEAR....0f...TS:R
0x1650b950 | 13 00 5f 54 1e 00 00 00 01 00 00 00 64 00 00 00 | 13._T1e...01...d...
0x1650b960 | 01 00 00 00 05 00 00 00 00 00 43 4b ff ff ff ff | 01...05.....CKffffffff
0x1650b970 | 00 00 52 41 00 4e 3a 52 43 50 5f 53 4b 55 4c 4c | ..RA.N:RCP_SKULL
0x1650b980 | 3a 52 43 50 00 00 00 00 0f 00 00 00 43 50 5f 54 | :RCP....0f...CP_T
0x1650b990 | ff ff ff ff 00 00 0a 28 ac 26 0c 29 61 ea 61 ea | ffffffff..0a(ac&0c)aeaaea
0x1650b9a0 | 55 10 50 5f 00 49 42 53 3a 52 43 50 5f 45 59 45 | U10P_.IBS:RCP_EYE
0x1650b9b0 | 4c 49 44 53 00 00 00 00 0f 00 00 00 5d 00 00 00 | LIDS....0f...]...
0x1650b9c0 | e9 b1 06 74 00 00 00 88 80 00 00 00 00 00 00 00 | e9b106t...8880.......
0x1650b9d0 | 00 00 00 00 00 00 00 00 42 4f 44 59 00 00 00 00 | ........BODY....
0x1650b9e0 | 00 00 00 00 00 00 00 00 4f 44 59 3a 00 00 00 00 | ........ODY:....
0x1650b9f0 | 00 00 00 00 00 00 00 00 5f 53 49 4d 00 00 00 00 | ........_SIM....
0x1650ba00 | 00 00 00 00 00 00 00 00 47 53 3a 52 00 00 00 00 | ........GS:R....
0x1650ba10 | 00 00 00 00 00 00 00 00 41 52 5f 4c a0 6b fd 17 | ........AR_La0kfd17
0x1650ba20 | a4 6b fd 17 a4 6b fd 17 3a 52 43 50 00 76 fd 17 | a4kfd17a4kfd17:RCP.vfd17
0x1650ba30 | 04 76 fd 17 04 76 fd 17 50 5f 34 5f f0 75 fd 17 | 04vfd1704vfd17P_4_f0ufd17
0x1650ba40 | f4 75 fd 17 f4 75 fd 17 43 50 5f 34 e0 75 fd 17 | f4ufd17f4ufd17CP_4e0ufd17
0x1650ba50 | e4 75 fd 17 e4 75 fd 17 43 50 5f 32 d0 75 fd 17 | e4ufd17e4ufd17CP_2d0ufd17
0x1650ba60 | d4 75 fd 17 d4 75 fd 17 4e 47 53 3a c0 75 fd 17 | d4ufd17d4ufd17NGS:c0ufd17
0x1650ba70 | c4 75 fd 17 c4 75 fd 17 50 5f 47 55 b0 75 fd 17 | c4ufd17c4ufd17P_GUb0ufd17
0x1650ba80 | b4 75 fd 17 b4 75 fd 17 54 3a 52 43 00 5f 53 50 | b4ufd17b4ufd17T:RC._SP
0x1650ba90 | 49 4e 45 3a 52 43 50 5f 4e 45 43 4b 00 00 00 00 | INE:RCP_NECK....
0x1650baa0 | 0f 00 00 00 49 4e 3a 52 00 00 00 00 00 00 00 00 | 0f...IN:R........
0x1650bab0 | 00 00 00 00 00 00 00 00 54 48 3a 52 ff ff ff ff | ........TH:Rffffffff
0x1650bac0 | ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff | ffffffffffffffffffffffffffffffff
0x1650bad0 | ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff | ffffffffffffffffffffffffffffffff
0x1650bae0 | ff ff ff ff ff ff ff ff 8c b1 06 74 00 00 00 88 | ffffffffffffffff8cb106t...88
0x1650baf0 | 81 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 81...............
0x1650bb00 | 42 4f 44 59 00 00 00 00 00 00 00 00 00 00 00 00 | BODY............
0x1650bb10 | 4f 44 59 3a 00 00 00 00 00 00 00 00 00 00 00 00 | ODY:............
0x1650bb20 | 5f 54 57 4f 00 00 00 00 00 00 00 00 00 00 00 00 | _TWO............
0x1650bb30 | 43 50 5f 54 00 00 00 00 00 00 00 00 00 00 00 00 | CP_T............
0x1650bb40 | 3a 52 43 50 a0 75 fd 17 a4 75 fd 17 a4 75 fd 17 | :RCPa0ufd17a4ufd17a4ufd17
0x1650bb50 | 46 49 4e 47 90 75 fd 17 94 75 fd 17 94 75 fd 17 | FING90ufd1794ufd1794ufd17
0x1650bb60 | 45 53 3a 52 80 75 fd 17 84 75 fd 17 84 75 fd 17 | ES:R80ufd1784ufd1784ufd17
0x1650bb70 | 50 5f 4e 4f 70 75 fd 17 74 75 fd 17 74 75 fd 17 | P_NOpufd17tufd17tufd17
0x1650bb80 | 53 3a 52 43 a0 76 fd 17 a4 76 fd 17 a4 76 fd 17 | S:RCa0vfd17a4vfd17a4vfd17
0x1650bb90 | 48 45 41 52 90 76 fd 17 94 76 fd 17 94 76 fd 17 | HEAR90vfd1794vfd1794vfd17
0x1650bba0 | 43 50 5f 54 80 76 fd 17 84 76 fd 17 84 76 fd 17 | CP_T80vfd1784vfd1784vfd17
0x1650bbb0 | 49 4e 45 3a 00 43 50 5f 4e 45 43 4b 3a 52 43 50 | INE:.CP_NECK:RCP
0x1650bbc0 | 5f 42 52 41 00 00 00 00 0f 00 00 00 4b 55 4c 4c | _BRA....0f...KULL
0x1650bbd0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0x1650bbe0 | 4f 4e 47 55 ff ff ff ff ff ff ff ff ff ff ff ff | ONGUffffffffffffffffffffffff
0x1650bbf0 | ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff | ffffffffffffffffffffffffffffffff
0x1650bc00 | ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff | ffffffffffffffffffffffffffffffff
0x1650bc10 | 53 b1 06 74 00 00 00 88 82 00 00 00 00 00 00 00 | Sb106t...8882.......
0x1650bc20 | 00 00 00 00 00 00 00 00 42 4f 44 59 00 00 00 00 | ........BODY....
0x1650bc30 | 00 00 00 00 00 00 00 00 4f 44 59 3a 00 00 00 00 | ........ODY:....
0x1650bc40 | 00 00 00 00 00 00 00 00 5f 54 57 4f 00 00 00 00 | ........_TWO....
0x1650bc50 | 00 00 00 00 00 00 00 00 43 50 5f 54 00 00 00 00 | ........CP_T....
0x1650bc60 | 00 00 00 00 00 00 00 00 3a 52 43 50 70 76 fd 17 | ........:RCPpvfd17
0x1650bc70 | 74 76 fd 17 74 76 fd 17 46 49 4e 47 60 76 fd 17 | tvfd17tvfd17FING`vfd17
0x1650bc80 | 64 76 fd 17 64 76 fd 17 45 53 3a 52 50 76 fd 17 | dvfd17dvfd17ES:RPvfd17
0x1650bc90 | 54 76 fd 17 54 76 fd 17 50 5f 4e 4f 40 76 fd 17 | Tvfd17Tvfd17P_NO@vfd17
0x1650bca0 | 44 76 fd 17 44 76 fd 17 53 3a 52 43 30 76 fd 17 | Dvfd17Dvfd17S:RC0vfd17
0x1650bcb0 | 34 76 fd 17 34 76 fd 17 48 45 41 52 20 76 fd 17 | 4vfd174vfd17HEAR vfd17
0x1650bcc0 | 24 76 fd 17 24 76 fd 17 43 50 5f 54 10 76 fd 17 | $vfd17$vfd17CP_T10vfd17
0x1650bcd0 | 14 76 fd 17 14 76 fd 17 49 4e 45 3a 00 43 50 5f | 14vfd1714vfd17INE:.CP_
0x1650bce0 | 4e 45 43 4b 3a 52 43 50 5f 42 52 41 00 00 00 00 | NECK:RCP_BRA....
0x1650bcf0 | 0f 00 00 00 4b 55 4c 4c 00 00 00 00 00 00 00 00 | 0f...KULL........
0x1650bd00 | 00 00 00 00 00 00 00 00 4f 4e 47 55 ff ff ff ff | ........ONGUffffffff
0x1650bd10 | ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff | ffffffffffffffffffffffffffffffff
0x1650bd20 | ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff | ffffffffffffffffffffffffffffffff
0x1650bd30 | ff ff ff ff ff ff ff ff 76 b1 06 74 00 00 00 88 | ffffffffffffffffvb106t...88
0x1650bd40 | ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 | ffffffff............
0x1650bd50 | 42 4f 44 59 00 00 00 00 00 00 00 00 00 00 00 00 | BODY............
0x1650bd60 | 4f 44 59 3a 00 00 00 00 00 00 00 00 00 00 00 00 | ODY:............
0x1650bd70 | 5f 54 57 4f 00 00 00 00 00 00 00 00 00 00 00 00 | _TWO............
0x1650bd80 | 43 50 5f 54 00 00 00 00 00 00 00 00 00 00 00 00 | CP_T............
0x1650bd90 | 3a 52 43 50 40 77 fd 17 44 77 fd 17 44 77 fd 17 | :RCP@wfd17Dwfd17Dwfd17
0x1650bda0 | 46 49 4e 47 30 77 fd 17 34 77 fd 17 34 77 fd 17 | FING0wfd174wfd174wfd17
0x1650bdb0 | 45 53 3a 52 20 77 fd 17 24 77 fd 17 24 77 fd 17 | ES:R wfd17$wfd17$wfd17
0x1650bdc0 | 50 5f 4e 4f 10 77 fd 17 14 77 fd 17 14 77 fd 17 | P_NO10wfd1714wfd1714wfd17
0x1650bdd0 | 53 3a 52 43 00 77 fd 17 04 77 fd 17 04 77 fd 17 | S:RC.wfd1704wfd1704wfd17
0x1650bde0 | 48 45 41 52 f0 76 fd 17 f4 76 fd 17 f4 76 fd 17 | HEARf0vfd17f4vfd17f4vfd17
0x1650bdf0 | 43 50 5f 54 e0 76 fd 17 e4 76 fd 17 e4 76 fd 17 | CP_Te0vfd17e4vfd17e4vfd17
0x1650be00 | 49 4e 45 3a 00 43 50 5f 4e 45 43 4b 3a 52 43 50 | INE:.CP_NECK:RCP
0x1650be10 | 5f 42 52 41 00 00 00 00 0f 00 00 00 4b 55 4c 4c | _BRA....0f...KULL
0x1650be20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0x1650be30 | 4f 4e 47 55 ff ff ff ff ff ff ff ff ff ff ff ff | ONGUffffffffffffffffffffffff
0x1650be40 | ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff | ffffffffffffffffffffffffffffffff
0x1650be50 | ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff | ffffffffffffffffffffffffffffffff
0x1650be60 | 1d b1 06 74 00 00 00 88 ff ff ff ff 00 00 00 00 | 1db106t...88ffffffff....
0x1650be70 | 00 00 00 00 00 00 00 00 42 4f 44 59 00 00 00 00 | ........BODY....
0x1650be80 | 00 00 00 00 00 00 00 00 4f 44 59 3a 00 00 00 00 | ........ODY:....
0x1650be90 | 00 00 00 00 00 00 00 00 5f 54 57 4f 00 00 00 00 | ........_TWO....
0x1650bea0 | 00 00 00 00 00 00 00 00 43 50 5f 54 00 00 00 00 | ........CP_T....
0x1650beb0 | 00 00 00 00 00 00 00 00 3a 52 43 50 d0 76 fd 17 | ........:RCPd0vfd17
0x1650bec0 | d4 76 fd 17 d4 76 fd 17 46 49 4e 47 c0 76 fd 17 | d4vfd17d4vfd17FINGc0vfd17
0x1650bed0 | c4 76 fd 17 c4 76 fd 17 45 53 3a 52 b0 76 fd 17 | c4vfd17c4vfd17ES:Rb0vfd17
0x1650bee0 | b4 76 fd 17 b4 76 fd 17 50 5f 4e 4f e0 77 fd 17 | b4vfd17b4vfd17P_NOe0wfd17
0x1650bef0 | e4 77 fd 17 e4 77 fd 17 53 3a 52 43 d0 77 fd 17 | e4wfd17e4wfd17S:RCd0wfd17
0x1650bf00 | d4 77 fd 17 d4 77 fd 17 48 45 41 52 c0 77 fd 17 | d4wfd17d4wfd17HEARc0wfd17
0x1650bf10 | c4 77 fd 17 c4 77 fd 17 43 50 5f 54 b0 77 fd 17 | c4wfd17c4wfd17CP_Tb0wfd17
0x1650bf20 | b4 77 fd 17 b4 77 fd 17 49 4e 45 3a 00 43 50 5f | b4wfd17b4wfd17INE:.CP_
0x1650bf30 | 4e 45 43 4b 3a 52 43 50 5f 42 52 41 00 00 00 00 | NECK:RCP_BRA....
0x1650bf40 | 0f 00 00 00 4b 55 4c 4c 00 00 00 00 00 00 00 00 | 0f...KULL........
0x1650bf50 | 00 00 00 00 00 00 00 00 4f 4e 47 55 ff ff ff ff | ........ONGUffffffff
0x1650bf60 | ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff | ffffffffffffffffffffffffffffffff
0x1650bf70 | ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff | ffffffffffffffffffffffffffffffff
0x1650bf80 | ff ff ff ff ff ff ff ff 20 b1 06 74 00 00 00 88 | ffffffffffffffff b106t...88
0x1650bf90 | 46 41 54 00 4c 45 00 00 00 00 00 00 00 00 00 00 | FAT.LE..........
0x1650bfa0 | 03 00 00 00 0f 00 00 00 00 00 00 00 20 f4 d7 0c | 03...0f....... f4d70c
0x1650bfb0 | 03 00 00 00 66 61 74 00 6c 65 00 00 00 00 00 00 | 03...fat.le......
0x1650bfc0 | 00 00 00 00 03 00 00 00 0f 00 00 00 00 00 00 00 | ....03...0f.......
0x1650bfd0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0x1650bfe0 | 00 00 00 00 0f 00 00 00 00 00 00 00 70 d4 5f 03 | ....0f.......pd4_03
0x1650bff0 | 00 00 00 00 00 00 00 00 00 00 00 00 12 00 00 00 | ............12...
0x1650c000 | 1f 00 00 00 00 00 00 00 46 41 54 00 4c 45 00 00 | 1f.......FAT.LE..
0x1650c010 | 00 00 00 00 00 00 00 00 03 00 00 00 0f 00 00 00 | ........03...0f...
0x1650c020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0x1650c030 | 00 00 00 00 00 00 00 00 0f 00 00 00 00 00 00 00 | ........0f.......
0x1650c040 | 14 00 00 00 1e 00 00 00 01 00 00 00 64 00 00 00 | 14...1e...01...d...
0x1650c050 | 03 00 00 00 05 00 00 00 00 00 00 00 ff ff ff ff | 03...05.......ffffffff
0x1650c060 | 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | d...............
0x1650c070 | 00 00 00 00 00 00 00 00 0f 00 00 00 00 00 00 00 | ........0f.......
0x1650c080 | ff ff ff ff 00 00 0a 28 ac 26 62 28 5e 27 61 ea | ffffffff..0a(ac&b(^'aea
0x1650c090 | 55 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | U10..............
0x1650c0a0 | 00 00 00 00 00 00 00 00 0f 00 00 00 00 00 00 00 | ........0f.......
0x1650c0b0 | c7 be 06 74 00 00 00 88 4d 55 53 43 4c 45 00 00 | c7be06t...88MUSCLE..
0x1650c0c0 | 00 00 00 00 00 00 00 00 06 00 00 00 0f 00 00 00 | ........06...0f...
0x1650c0d0 | 00 00 00 00 40 cc d7 0c 03 00 00 00 6d 75 73 63 | ....@ccd70c03...musc
0x1650c0e0 | 6c 65 00 00 00 00 00 00 00 00 00 00 06 00 00 00 | le..........06...
0x1650c0f0 | 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0f...............
0x1650c100 | 00 00 00 00 00 00 00 00 00 00 00 00 0f 00 00 00 | ............0f...
0x1650c110 | 00 00 00 00 e8 cf 5f 03 00 00 00 00 00 00 00 00 | ....e8cf_03........
0x1650c120 | 00 00 00 00 12 00 00 00 1f 00 00 00 00 00 00 00 | ....12...1f.......
0x1650c130 | 4d 55 53 43 4c 45 00 00 00 00 00 00 00 00 00 00 | MUSCLE..........
0x1650c140 | 06 00 00 00 0f 00 00 00 00 00 00 00 00 00 00 00 | 06...0f...........
0x1650c150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0x1650c160 | 0f 00 00 00 00 00 00 00 15 00 00 00 1e 00 00 00 | 0f.......15...1e...
0x1650c170 | 03 00 00 00 64 00 00 00 05 00 00 00 05 00 00 00 | 03...d...05...05...
0x1650c180 | 00 00 00 00 ff ff ff ff 00 00 00 00 00 00 00 00 | ....ffffffff........
0x1650c190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0x1650c1a0 | 0f 00 00 00 00 00 00 00 ff ff ff ff 00 00 0a 28 | 0f.......ffffffff..0a(
0x1650c1b0 | ac 26 0c 29 61 ea 61 ea 55 10 00 00 00 00 00 00 | ac&0c)aeaaeaU10......
0x1650c1c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0x1650c1d0 | 0f 00 00 00 00 00 00 00 ea be 06 74 00 00 00 88 | 0f.......eabe06t...88
0x1650c1e0 | 42 4f 4e 45 00 4c 41 47 45 00 00 00 00 00 00 00 | BONE.LAGE.......
0x1650c1f0 | 04 00 00 00 0f 00 00 00 00 00 00 00 30 c8 d7 0c | 04...0f.......0c8d70c
0x1650c200 | 03 00 00 00 62 6f 6e 65 00 6c 61 67 65 00 00 00 | 03...bone.lage...
0x1650c210 | 00 00 00 00 04 00 00 00 0f 00 00 00 00 00 00 00 | ....04...0f.......
0x1650c220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0x1650c230 | 00 00 00 00 0f 00 00 00 00 00 00 00 98 cf 5f 03 | ....0f.......98cf_03
0x1650c240 | 00 00 00 00 00 00 00 00 00 00 00 00 12 00 00 00 | ............12...
0x1650c250 | 1f 00 00 00 00 00 00 00 42 4f 4e 45 00 4c 41 47 | 1f.......BONE.LAG
0x1650c260 | 45 00 00 00 00 00 00 00 04 00 00 00 0f 00 00 00 | E.......04...0f...
0x1650c270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0x1650c280 | 00 00 00 00 00 00 00 00 0f 00 00 00 00 00 00 00 | ........0f.......
0x1650c290 | 16 00 00 00 1e 00 00 00 02 00 00 00 e8 03 00 00 | 16...1e...02...e803..
0x1650c2a0 | 03 00 00 00 32 00 00 00 00 00 00 00 ff ff ff ff | 03...2.......ffffffff
0x1650c2b0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0x1650c2c0 | 00 00 00 00 00 00 00 00 0f 00 00 00 00 00 00 00 | ........0f.......
0x1650c2d0 | ff ff ff ff 00 00 0a 28 ac 26 0c 29 61 ea 61 ea | ffffffff..0a(ac&0c)aeaaea
0x1650c2e0 | e8 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | e803..............
0x1650c2f0 | 00 00 00 00 00 00 00 00 0f 00 00 00 00 00 00 00 | ........0f.......
The values here change on adding/removing dwarfs to squads and deleting/creating squads. So I guess vector_squads is somwhere here. I can't test it on my own though, because I have freezes when trying to read dwarfs ( I hope this would be helpfull in some way.
Did you just tap into the military interface? If we used this, could we make a Therapist-Like tool for organizing squads?
Did you just tap into the military interface? If we used this, could we make a Therapist-Like tool for organizing squads?
This would be the greatest thing ever made.
Did you just tap into the military interface? If we used this, could we make a Therapist-Like tool for organizing squads?
Has anyone had any luck getting the OS X version to do anything other than crash immediately at launch? I've relaunched everything a few dozen times now, with no luck.
Has anyone had any luck getting the OS X version to do anything other than crash immediately at launch? I've relaunched everything a few dozen times now, with no luck.
It happens for me, too. Win 7 x64. It worked when I first created the INI file, But not since a restart of DF. The only change I made was removing [Aquafier] tags. I wouldn't think this would do anything, but I wouldn't really know, either.
Ill just keep trying to restart until someone has a better idea. ::)
Found the rest of the offsets, release is pending.
Found the rest of the offsets, release is pending.
I NEEEEEDDD THISSSS.
I NEEEEEDDD THISSSS. Please.
Found the rest of the offsets, release is pending.
Did you just tap into the military interface? If we used this, could we make a Therapist-Like tool for organizing squads?I hesitated for a while and then overchecked everything. Yes. This is it. The memory block where dwarf-squad assingments are stored. I even managed to modify one of my squads to consist of 3 copies of one dwarf. However, are you sure that it is a new information? I was pretty sure that it is just a block(vector_squad) already described and used in DT.
IS DIS HAPPENING TONIGHT?
IS DIS HAPPENING TONIGHT, Sir?
IS DIS HAPPENING TONIGHT?Settle the hell down he just posted it like 30 minutes ago, give him a while to test his work before asking stupid questions in caps.
It may be known, but it's not been exploited yet. I have yet to hear of any tool or program that utilized the memory blocks for squads. Even if it's not new info, it's unused info, and a big chunk of info that could be dearly used. So, aside from the usual "keep everything running" goals, I feel a squad interface added to DT would be ideal. You assign a few squad captains, and then use the spreadsheet-like layout to drag-drop dwarves onto different squad entries. The table would show their military skills - including Teacher and Student.Did you just tap into the military interface? If we used this, could we make a Therapist-Like tool for organizing squads?I hesitated for a while and then overchecked everything. Yes. This is it. The memory block where dwarf-squad assingments are stored. I even managed to modify one of my squads to consist of 3 copies of one dwarf. However, are you sure that it is a new information? I was pretty sure that it is just a block(vector_squad) already described and used in DT.Spoiler (click to show/hide)
Dwarf Therapist actually uses this for the Group By: Squad option. (The offset is squad_ref_id)It may be known, but it's not been exploited yet. I have yet to hear of any tool or program that utilized the memory blocks for squads. Even if it's not new info, it's unused info, and a big chunk of info that could be dearly used. So, aside from the usual "keep everything running" goals, I feel a squad interface added to DT would be ideal. You assign a few squad captains, and then use the spreadsheet-like layout to drag-drop dwarves onto different squad entries. The table would show their military skills - including Teacher and Student.Did you just tap into the military interface? If we used this, could we make a Therapist-Like tool for organizing squads?I hesitated for a while and then overchecked everything. Yes. This is it. The memory block where dwarf-squad assingments are stored. I even managed to modify one of my squads to consist of 3 copies of one dwarf. However, are you sure that it is a new information? I was pretty sure that it is just a block(vector_squad) already described and used in DT.Spoiler (click to show/hide)
The migration wave info isn't right, they're all over the place with my originals showing up as the last wave to arrive. Nothing major, though I do like to assign jobs to a new wave as a group. Moving right along...
Speculation: Since migrants are historical figures now, they're getting tagged by when they appeared during worldgen instead of when they arrived.
One quick bug report, children are under "pressers" and Bone doctors and Diagnosers are under spearman and master spearman. I am sure the rest are probably off as well, but my fort was such a busy mess that I couldn't identify any of the other mistakes easily.
There's an option for that. It's under "Options" under "I'm a dirty cheater" I believe.
checksum=0xa74ac151
version_name=v0.34.01
complete=false
[addresses]
translation_vector=0x0154c918
language_vector=0x0154c900
Minor progress on the OSX version...and a cry for help-
2012-Feb-15 21:43:47.173 INFO core Detected Dwarf Fortress version "v0.34.01" using MemoryLayout from "/Applications/DwarfTherapist.app/Contents/Resources/etc/memory_layouts/osx/v0.34.01.ini" [../taylorfisher-1/src/dfinstance.cpp:665] (get_memory_layout)
2012-Feb-15 21:43:47.176 DEBUG core Starting Search in Thread 0x1065c9000 [bin/debug/../../../taylorfisher-1/inc/dwarfraceindexsearchjob.h:62] (go)
still cannot get past that. For 'creature vector' it's providing multiple possibilities...
2012-Feb-15 23:06:20.873 DEBUG core ADDRESS FOR: "creature_vector" "0x0169c8e0" UNCORRECTED: "0x0169c8e0" [../taylorfisher-1/src/scanner.cpp:69] (report_address)
2012-Feb-15 23:06:20.874 DEBUG core ADDRESS FOR: "creature_vector" "0xb02879f0" UNCORRECTED: "0xb02879f0" [../taylorfisher-1/src/scanner.cpp:69] (report_address)
2012-Feb-15 23:06:23.808 DEBUG core ADDRESS FOR: "creature_vector" "0x0150b5d8" UNCORRECTED: "0x0150b5d8" [../taylorfisher-1/src/scanner.cpp:69] (report_address)
2012-Feb-15 23:06:26.931 DEBUG core ADDRESS FOR: "creature_vector" "0x0150b5cc" UNCORRECTED: "0x0150b5cc" [../taylorfisher-1/src/scanner.cpp:69] (report_address)
2012-Feb-15 23:06:39.226 DEBUG core ADDRESS FOR: "creature_vector" "0xb0288348" UNCORRECTED: "0xb0288348" [../taylorfisher-1/src/scanner.cpp:69] (report_address)
As mentioned, I've created a Tip Jar (http://dwarftherapist.com/tip.html) with the intent of getting a mac mini to start merging / supporting OSX. I'll look into adding linux support once again this weekend.
Please report any issues you find!
Thanks for your support!
-DE
Did you just tap into the military interface? If we used this, could we make a Therapist-Like tool for organizing squads?
This would be the greatest thing ever made.
Installed DT 6.11 and ran in to a bug, all the lastnames are shown as "UnknownUnknown"
I wondered how it was going to hide vampires.This need to be an option like child labor.
Here's what I've got so far for Linux.
[info]
checksum=0xa42a074a
version_name=v0.34.01
complete=false
[addresses]
translation_vector=0x095c7bf8
language_vector=0x095c7be0
creature_vector=0x095868ac
dwarf_race_index=0x0956e240
squad_vector=0x0
[offsets]
word_table=0x0000001c
I'd dink around on this more tonight, but I'm already exhausted. Someone else want to pick up the DT linux squad vector and offsets?
Have just two of them: kids and waves, but already uploaded:For me all kids are beekeepers ;)
http://dffd.wimbli.com/download.php?id=5531&f=save1.zip
Also all kids are seen as pressers.
Actually i like assigning labors for kids, as my immigration waves mostly consist of children. :D
Migrations Waves are entirely wrong to the point that every dwarf (or max 2) is in 1 wave ;)I think this could be a problem.
I should have 3 waves and have 11
Despite that DT works like a charm.
Let's try to guess the wave a dwarf arrived in based on ID.
The game appears to assign ids to creates in a serial manner.
Since at least 1 season seems to pass in between waves there is a
high likelihood that dwarves arriving in a new wave will be folling
several other creatures such as groundhogs and the like, thus
producing a gap in IDs of more than 1
immigrants to your fortress will now be historical figures whenever possible, which means more family relationships and history for each one
I think this could be a problem.
There is no variable that holds the migration wave of a dwarf. DT calculates it by comparing ids and gaps in ids of the dwarfs in the creature vector. Since migrants in the new version are not generated when the imigration happenes but taken from the world, they have an existing lower id not according to the time they arrive. This would explain why the 7 starting dwarfs are in the same wave with the higest wave number (highes id = latest wave) and other dwarfs spread over many earlyer migrationn waves in the list.
Is there no variable for how long a dwarf has lived in a location (ie your fort)?As I am not code-literate, I may be wrong, but I'd be incredibly surprized if there was not. I know for a fact that the game tracks the season and year of the dwarf arriving at your fort in legends mode. If you could find where that value is stored, you could probably sort immigration waves based on that. Depending on the precise coding, it may also be possible that any children born in the same season would show up as migrants, but I don't know about that one, and that's not much of a trade-off in my opinion.
Is there no variable for how long a dwarf has lived in a location (ie your fort)?As I am not code-literate, I may be wrong, but I'd be incredibly surprized if there was not. I know for a fact that the game tracks the season and year of the dwarf arriving at your fort in legends mode. If you could find where that value is stored, you could probably sort immigration waves based on that.
He is a citizen of The Violent Sacks. He is a member of The Confident Bust. (yup, thats us) He is a former member of The Razors of Distance. (... interesting) He is a former prisoner of The Copper Hate. (wut?) He arrived at Ralokang on teh 24th of Hematite in the year 126. (ooh, I like this addition)
Is there no variable for how long a dwarf has lived in a location (ie your fort)?As I am not code-literate, I may be wrong, but I'd be incredibly surprized if there was not. I know for a fact that the game tracks the season and year of the dwarf arriving at your fort in legends mode. If you could find where that value is stored, you could probably sort immigration waves based on that. Depending on the precise coding, it may also be possible that any children born in the same season would show up as migrants, but I don't know about that one, and that's not much of a trade-off in my opinion.
Of course, that would likely require finding the value for the fort itself as well, as the game simply says "in <season> of <year>, <name> arrived in <fortress>" or something like that. If the game simply tracks intersection of values, you'd need a way of finding the fortress value. I have no idea whether that's possible, although to be fair I honestly have no idea on the validity of anything I've said above...
OMG you guy have no idea how happy I am to know that therapist is going on mac!! I... I mean... There are no other way to say it :D
Is there a bit of funding related to this sudden change on plan? On making therapist available for mac?
As mentioned, I've created a Tip Jar (http://dwarftherapist.com/tip.html) with the intent of getting a mac mini to start merging / supporting OSX. I'll look into adding linux support once again this weekend.
Actually, there is a variable now that shows when the migrants arrive. It's in the stats screen - v + z + enter.Yeah, I'll be looking into that tonight. Could be extremely useful, and might result in migration waves working better than ever :)
"He is a citizen of The Infinite Silvers. He is a member of The Towers of Ice. He is a former member of The Confusing Pillar. He is a former member of The Work of Bowing. He arrived at Edimetur on the 3rd of Felsite in the year 102."
Note the last sentence. Perhaps this could be utilized?
[professions]
# all professions assume can_assign_labors is true, and is_military is false
size=106
1/name = Miner
1/id = 0
2/name = Woodworker
2/id = 1
3/name = Carpenter
3/id = 2
4/name = Bowyer
4/id = 3
5/name = Woodcutter
5/id = 4
6/name = Stoneworker
6/id = 5
7/name = Engraver
7/id = 6
8/name = Mason
8/id = 7
9/name = Ranger
9/id = 8
10/name = Animal Caretaker
10/id = 9
11/name = Animal Trainer
11/id = 10
12/name = Hunter
12/id = 11
13/name = Trapper
13/id = 12
14/name = Animal Dissector
14/id = 13
15/name = Metalsmith
15/id = 14
16/name = Furnace Operator
16/id = 15
17/name = Weaponsmith
17/id = 16
18/name = Armorer
18/id = 17
19/name = Blacksmith
19/id = 18
20/name = Metalcrafter
20/id = 19
21/name = Jeweler
21/id = 20
22/name = Gem Cutter
22/id = 21
23/name = Gem Setter
23/id = 22
24/name = Craftsman
24/id = 23
25/name = Woodcrafter
25/id = 24
26/name = Stonecrafter
26/id = 25
27/name = Leatherworker
27/id = 26
28/name = Bone Carver
28/id = 27
29/name = Weaver
29/id = 28
30/name = Clothier
30/id = 29
31/name = Glassmaker
31/id = 30
32/name = Potter
32/id = 31
33/name = Glazer
33/id = 32
34/name = Wax Worker
34/id = 33
35/name = Strand Extractor
35/id = 34
36/name = Fishery Worker
36/id = 35
37/name = Fisherman
37/id = 36
38/name = Fish Dissector
38/id = 37
39/name = Fish Cleaner
39/id = 38
40/name = Farmer
40/id = 39
41/name = Cheesemaker
41/id = 40
42/name = Milker
42/id = 41
43/name = Cooking
43/id = 42
44/name = Thresher
44/id = 43
45/name = Miller
45/id = 44
46/name = Butcher
46/id = 45
47/name = Tanner
47/id = 46
48/name = Dyer
48/id = 47
49/name = Planter
49/id = 48
50/name = Herbalist
50/id = 49
51/name = Brewer
51/id = 50
52/name = Soap Maker
52/id = 51
53/name = Potash Maker
53/id = 52
54/name = Lye Maker
54/id = 53
55/name = Wood Burner
55/id = 54
56/name = Shearer
56/id = 55
57/name = Spinner
57/id = 56
58/name = Presser
58/id = 57
59/name = Beekeeper
59/id = 58
60/name = Engineer
60/id = 59
61/name = Mechanic
61/id = 60
62/name = Siege Engineer
62/id = 61
63/name = Siege Operator
63/id = 62
64/name = Pump Operator
64/id = 63
65/name = Clerk
65/id = 64
66/name = Administrator
66/id = 65
67/name = Trader
67/id = 66
68/name = Architect
68/id = 67
69/name = Alchemist
69/id = 68
70/name = Doctor
70/id = 69
71/name = Diagnoser
71/id = 70
72/name = Bone Setter
72/id = 71
73/name = Suturer
73/id = 72
74/name = Surgeon
74/id = 73
75/name = Merchant
75/id = 74
76/name = Hammerman
76/id = 75
76/is_military = true
76/can_assign_labors = true
77/name = Master Hammerman
77/id = 76
77/is_military = true
77/can_assign_labors = false
78/name = Spearman
78/id = 77
78/is_military = true
78/can_assign_labors = true
79/name = Master Spearman
79/id = 78
79/is_military = true
79/can_assign_labors = false
80/name = Crossbowman
80/id = 79
80/is_military = true
80/can_assign_labors = true
81/name = Master Crossbowman
81/id = 80
81/is_military = true
81/can_assign_labors = false
82/name = Wrestler
82/id = 81
82/is_military = true
82/can_assign_labors = true
83/name = Master Wrestler
83/id = 82
83/is_military = true
83/can_assign_labors = false
84/name = Axeman
84/id = 83
84/is_military = true
84/can_assign_labors = true
85/name = Master Axeman
85/id = 84
85/is_military = true
85/can_assign_labors = false
86/name = Swordsman
86/id = 85
86/is_military = true
86/can_assign_labors = true
87/name = Master Swordsman
87/id = 86
87/is_military = true
87/can_assign_labors = false
88/name = Maceman
88/id = 87
88/is_military = true
88/can_assign_labors = true
89/name = Master Maceman
89/id = 88
89/is_military = true
89/can_assign_labors = false
90/name = Pikeman
90/id = 89
90/is_military = true
90/can_assign_labors = true
91/name = Master Pikeman
91/id = 90
91/is_military = true
91/can_assign_labors = false
92/name = Bowman
92/id = 91
92/is_military = true
92/can_assign_labors = true
93/name = Master Bowman
93/id = 92
93/is_military = true
93/can_assign_labors = false
94/name = Blowgunman
94/id = 93
94/is_military = true
94/can_assign_labors = true
95/name = Master Blowgunman
95/id = 94
95/is_military = true
95/can_assign_labors = false
96/name = Lasher
96/id = 95
96/is_military = true
96/can_assign_labors = true
97/name = Master Lasher
97/id = 96
97/is_military = true
97/can_assign_labors = false
98/name = Recruit
98/id = 97
98/is_military = true
98/can_assign_labors = true
99/name = Trained Hunter
99/id = 98
99/is_military = false
99/can_assign_labors = true
100/name = Trained War
100/id = 99
100/is_military = false
100/can_assign_labors = true
101/name = Master Thief
101/id = 100
101/is_military = false
101/can_assign_labors = true
102/name = Thief
102/id = 101
103/name = Peasant
103/id = 102
104/name = Child
104/id = 103
104/is_military = false
104/can_assign_labors = false
105/name = Baby
105/id = 104
105/is_military = false
105/can_assign_labors = false
106/name = Drunk
106/id = 105
It still doesn't read profession and experience properly, so the souls offset are probably wrong. I'll try looking into it.You have my complete and unwavering moral support in your endeavors :P
If you take a look at this thread (http://www.bay12forums.com/smf/index.php?topic=100826.0), it covers how to find the squad vector:
Found the squad offset on linux (well, DT found it for me :P): 0x095c47b4
I got the okay from Dwarf Engineer to post this quick fix before it is verified by him for official release. This should fix the IDs to correctly display professions, in the process fixing the dwarf child labor issue and the military Recruits without a weapon specialty not showing up at all. Just open up the file game_data.ini in the etc folder and replace the entire [professions] heading with the code below.Code: [Select][professions]
# all professions assume can_assign_labors is true, and is_military is false
size=106
1/name = Miner
1/id = 0
2/name = Woodworker
2/id = 1
3/name = Carpenter
3/id = 2
4/name = Bowyer
4/id = 3
5/name = Woodcutter
5/id = 4
6/name = Stoneworker
6/id = 5
7/name = Engraver
7/id = 6
8/name = Mason
8/id = 7
9/name = Ranger
9/id = 8
10/name = Animal Caretaker
10/id = 9
11/name = Animal Trainer
11/id = 10
12/name = Hunter
12/id = 11
13/name = Trapper
13/id = 12
14/name = Animal Dissector
14/id = 13
15/name = Metalsmith
15/id = 14
16/name = Furnace Operator
16/id = 15
17/name = Weaponsmith
17/id = 16
18/name = Armorer
18/id = 17
19/name = Blacksmith
19/id = 18
20/name = Metalcrafter
20/id = 19
21/name = Jeweler
21/id = 20
22/name = Gem Cutter
22/id = 21
23/name = Gem Setter
23/id = 22
24/name = Craftsman
24/id = 23
25/name = Woodcrafter
25/id = 24
26/name = Stonecrafter
26/id = 25
27/name = Leatherworker
27/id = 26
28/name = Bone Carver
28/id = 27
29/name = Weaver
29/id = 28
30/name = Clothier
30/id = 29
31/name = Glassmaker
31/id = 30
32/name = Potter
32/id = 31
33/name = Glazer
33/id = 32
34/name = Wax Worker
34/id = 33
35/name = Strand Extractor
35/id = 34
36/name = Fishery Worker
36/id = 35
37/name = Fisherman
37/id = 36
38/name = Fish Dissector
38/id = 37
39/name = Fish Cleaner
39/id = 38
40/name = Farmer
40/id = 39
41/name = Cheesemaker
41/id = 40
42/name = Milker
42/id = 41
43/name = Cooking
43/id = 42
44/name = Thresher
44/id = 43
45/name = Miller
45/id = 44
46/name = Butcher
46/id = 45
47/name = Tanner
47/id = 46
48/name = Dyer
48/id = 47
49/name = Planter
49/id = 48
50/name = Herbalist
50/id = 49
51/name = Brewer
51/id = 50
52/name = Soap Maker
52/id = 51
53/name = Potash Maker
53/id = 52
54/name = Lye Maker
54/id = 53
55/name = Wood Burner
55/id = 54
56/name = Shearer
56/id = 55
57/name = Spinner
57/id = 56
58/name = Presser
58/id = 57
59/name = Beekeeper
59/id = 58
60/name = Engineer
60/id = 59
61/name = Mechanic
61/id = 60
62/name = Siege Engineer
62/id = 61
63/name = Siege Operator
63/id = 62
64/name = Pump Operator
64/id = 63
65/name = Clerk
65/id = 64
66/name = Administrator
66/id = 65
67/name = Trader
67/id = 66
68/name = Architect
68/id = 67
69/name = Alchemist
69/id = 68
70/name = Doctor
70/id = 69
71/name = Diagnoser
71/id = 70
72/name = Bone Setter
72/id = 71
73/name = Suturer
73/id = 72
74/name = Surgeon
74/id = 73
75/name = Merchant
75/id = 74
76/name = Hammerman
76/id = 75
76/is_military = true
76/can_assign_labors = true
77/name = Master Hammerman
77/id = 76
77/is_military = true
77/can_assign_labors = false
78/name = Spearman
78/id = 77
78/is_military = true
78/can_assign_labors = true
79/name = Master Spearman
79/id = 78
79/is_military = true
79/can_assign_labors = false
80/name = Crossbowman
80/id = 79
80/is_military = true
80/can_assign_labors = true
81/name = Master Crossbowman
81/id = 80
81/is_military = true
81/can_assign_labors = false
82/name = Wrestler
82/id = 81
82/is_military = true
82/can_assign_labors = true
83/name = Master Wrestler
83/id = 82
83/is_military = true
83/can_assign_labors = false
84/name = Axeman
84/id = 83
84/is_military = true
84/can_assign_labors = true
85/name = Master Axeman
85/id = 84
85/is_military = true
85/can_assign_labors = false
86/name = Swordsman
86/id = 85
86/is_military = true
86/can_assign_labors = true
87/name = Master Swordsman
87/id = 86
87/is_military = true
87/can_assign_labors = false
88/name = Maceman
88/id = 87
88/is_military = true
88/can_assign_labors = true
89/name = Master Maceman
89/id = 88
89/is_military = true
89/can_assign_labors = false
90/name = Pikeman
90/id = 89
90/is_military = true
90/can_assign_labors = true
91/name = Master Pikeman
91/id = 90
91/is_military = true
91/can_assign_labors = false
92/name = Bowman
92/id = 91
92/is_military = true
92/can_assign_labors = true
93/name = Master Bowman
93/id = 92
93/is_military = true
93/can_assign_labors = false
94/name = Blowgunman
94/id = 93
94/is_military = true
94/can_assign_labors = true
95/name = Master Blowgunman
95/id = 94
95/is_military = true
95/can_assign_labors = false
96/name = Lasher
96/id = 95
96/is_military = true
96/can_assign_labors = true
97/name = Master Lasher
97/id = 96
97/is_military = true
97/can_assign_labors = false
98/name = Recruit
98/id = 97
98/is_military = true
98/can_assign_labors = true
99/name = Trained Hunter
99/id = 98
99/is_military = false
99/can_assign_labors = true
100/name = Trained War
100/id = 99
100/is_military = false
100/can_assign_labors = true
101/name = Master Thief
101/id = 100
101/is_military = false
101/can_assign_labors = true
102/name = Thief
102/id = 101
103/name = Peasant
103/id = 102
104/name = Child
104/id = 103
104/is_military = false
104/can_assign_labors = false
105/name = Baby
105/id = 104
105/is_military = false
105/can_assign_labors = false
106/name = Drunk
106/id = 105
Ok, I've found the labor offset (still linux): 0x0604
The soul offset SHOULD be at 0x05e8, but I haven't been able to confirm that since the soul details have changed too.
I'm really going in the dark here :| I'm trying to find similarities between a 2010 memory dump and 2012's, but so far the soul details has eluded me. I'll update some more tonight if I find other offsets.
[info]
checksum=0xa42a074a
version_name=v0.34.01
complete=false
[addresses]
translation_vector=0x095c7bf8
language_vector=0x095c7be0
creature_vector=0x095868ac
dwarf_race_index=0x0956e240
squad_vector=0x095c47b4
[offsets]
word_table=0x0000001c
[dwarf_offsets]
labors=0x0604
recheck_equipment=0x0148
souls=0x05e8
[info]
checksum=0xa42a074a
version_name=v0.34.01
complete=true
[addresses]
translation_vector=0x095c7bf8
language_vector=0x095c7be0
creature_vector=0x095868ac
dwarf_race_index=0x0956e240
squad_vector=0x095c47b4
[offsets]
word_table=0x001C
[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024
[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0148
current_job=0x0274
states=0x0
souls=0x05e8
labors=0x0604
happiness=0x0694
squad_ref_id=0x06f8
[soul_details]
skills=0x01D4
traits=0x01EC
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x000C
members=0x0044
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
Not a programmer, but I've noticed that the most recent .ini from dyn seems to cause children to be displayed as 'Pressers.' Thanks all for the excellent work you do.
OMG you guy have no idea how happy I am to know that therapist is going on mac!! I... I mean... There are no other way to say it :D
Is there a bit of funding related to this sudden change on plan? On making therapist available for mac?As mentioned, I've created a Tip Jar (http://dwarftherapist.com/tip.html) with the intent of getting a mac mini to start merging / supporting OSX. I'll look into adding linux support once again this weekend.
I think now is actually a fairly good time to make requests. His Lordship Engineer has his machine warm and his Therapist hat on, might as well do one update session and add new features at the same time, right?
Albeit, finding offsets and adding features are apples and plating an orange orchard, not exactly fair to compare the two so closely...
I'll look into this now. Can anyone else confirm that after the game_data.ini fix that I posted above they are also still having children show up as Pressers or anything else but children?
Just got some newly born children showing up as Beekeepers.
dyn - I had already applied those profession IDs. Not a real big deal, I just re-assign all Beekeepers and Pressers to a custom "Child" profession. Thanks for the hard work.
[info]
checksum=0xa42a074a
version_name=v0.34.01
complete=true
[addresses]
translation_vector=0x095c7bf8
language_vector=0x095c7be0
creature_vector=0x095868ac
dwarf_race_index=0x0956e240
squad_vector=0x095c47b4
[offsets]
word_table=0x001C
[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024
[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0148
current_job=0x0274
states=0x0
souls=0x05e8
labors=0x0604
happiness=0x0694
squad_ref_id=0x06f8
[soul_details]
skills=0x01D4
traits=0x01EC
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x000C
members=0x0044
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
I do hope to add some features to the next release. Right now I'm hip deep in debugging the migration waves issue.
There are 1200 time units per day.
There are 28 days per month.
There are 12 months in a year.
Decimal value of a given date is: 1200 * ((28 * month) + day - 1)
For example:
1 Granite would be 1200 * (28 * 0 + 1-1) = 0
23 Hematite would be 1200 * (28 * 3 + 23-1) = 127200
If i could adress you a suggestion DE ?
Can you make a button to enable or disable all hauling functions too ?
I think of it for a long time !
I think my best bet is to figure out where the game clock offset is, then try to find the migrants offset when the game pauses for new migrants. Otherwise it's storing dwarf wave information as a separate file / settings in dwarf therapist (not at all ideal)Calculated my starting year to 0x06021600. No reference within the creatures-vector.
Hmm strange. Any way I could get a copy of the save to take a look at? If not, no worries, I'll start a few games and keep checking the children/babies. Everything is working correctly on my end but there may be other changes that need to be addressed.
I also found:
H
0x0aacbdc0 | 65 20 61 72 72 69 76 65 64 20 61 74 20 4c 69 6d | e arrived at Lim
0x0aacbdd0 | 83 72 69 64 65 6e 20 6f 6e 20 74 68 65 20 31 73 | 83riden on the 1s
0x0aacbde0 | 74 20 6f 66 20 47 72 61 6e 69 74 65 20 69 6e 20 | t of Granite in
0x0aacbdf0 | 74 68 65 20 79 65 61 72 20 32 35 31 2e 20 20 5b | the year 251.
...but this seems to be just a string with my displayed thoughts an preferences.
please go to the google code project page (http://code.google.com/p/dwarftherapist/issues/list) to post bugs/issues
Been chasing the string lead for a while now with no luck. The string is loaded on demand, so it doesn't show up until you actually go to the preferences screen. In addition, the timestamp or what-have-you of the arrival time does not appear to be saved in memory - at least not in the format I discovered for dwarves birth dates. Still banging my head on this one. :-/I think my best bet is to figure out where the game clock offset is, then try to find the migrants offset when the game pauses for new migrants. Otherwise it's storing dwarf wave information as a separate file / settings in dwarf therapist (not at all ideal)Calculated my starting year to 0x06021600. No reference within the creatures-vector.
But found the value at some places:
Found '' (00160206) = 0x0043f94c (uncorrected:0x0043f94c)
Found '' (00160206) = 0x0ae27fff (uncorrected:0x0ae27fff)
Found '' (00160206) = 0x0ae32fff (uncorrected:0x0ae32fff)
Found '' (00160206) = 0x0ae35fff (uncorrected:0x0ae35fff)
Found '' (00160206) = 0x0ae47fff (uncorrected:0x0ae47fff)
Found '' (00160206) = 0x0ae62fff (uncorrected:0x0ae62fff)
Found '' (00160206) = 0x0ae88fff (uncorrected:0x0ae88fff)
Found '' (00160206) = 0x0ae95fff (uncorrected:0x0ae95fff)
Found '' (00160206) = 0x0ae9dfff (uncorrected:0x0ae9dfff)
Found '' (00160206) = 0x0aeb08bf (uncorrected:0x0aeb08bf)
Found '' (00160206) = 0x0aeb8fff (uncorrected:0x0aeb8fff)
Found '' (00160206) = 0x0aec0fff (uncorrected:0x0aec0fff)
Found '' (00160206) = 0x0aec3fff (uncorrected:0x0aec3fff)
Found '' (00160206) = 0x156656f7 (uncorrected:0x156656f7)
Found '' (00160206) = 0x15c46137 (uncorrected:0x15c46137)
Found '' (00160206) = 0x2b8f5aa3 (uncorrected:0x2b8f5aa3)
Looking at the raws it seems like at 0x0ae* are stored historical information according to my fortress and world.
I would say the game does not track the arrival of the dwarf within the structure in the dwarf vector but in aspecial history-vector. But I didn't find references...
I also found:
H
0x0aacbdc0 | 65 20 61 72 72 69 76 65 64 20 61 74 20 4c 69 6d | e arrived at Lim
0x0aacbdd0 | 83 72 69 64 65 6e 20 6f 6e 20 74 68 65 20 31 73 | 83riden on the 1s
0x0aacbde0 | 74 20 6f 66 20 47 72 61 6e 69 74 65 20 69 6e 20 | t of Granite in
0x0aacbdf0 | 74 68 65 20 79 65 61 72 20 32 35 31 2e 20 20 5b | the year 251.
...but this seems to be just a string with my displayed thoughts an preferences.
In the meantime, I find a good way of making sure you know which dwarves are new is to enable the alchemy labour on all dwarves once you are finished setting up their labours. Because the alchemy labour currently does nothing, you can then tell which dwarves arrived with the latest way via the lack of alchemy labour.
It's not a fix, but it helps keep track while the bug is around.
[info]
checksum=0xf4fc8347
version_name=v0.34.02
complete=true
[addresses]
translation_vector=0x095ca018
language_vector=0x095ca000
creature_vector=0x09588ccc
dwarf_race_index=0x09570660
squad_vector=0x095c6bd4
[offsets]
word_table=0x001C
[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024
[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0148
current_job=0x0274
states=0x0
souls=0x05e8
labors=0x0604
happiness=0x0694
squad_ref_id=0x06f8
[soul_details]
skills=0x01D4
traits=0x01EC
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x000C
members=0x0044
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
It's the weekend now btw.
I did say I wanted to have a stable release for this weekend. Good news on that front - I found what I think is a pretty solid solution for migration waves. I'm looking at current issues to see what else I can include in this release, then something should be out within the next couple of hours.It's the weekend now btw.
Meaning?
Holy shit, you're fast. :oLuckily I was already getting a release put together when I saw that 34.02 was posted. As noted by moozaad, generating new layouts for minor versions is now pretty trivial, so I was able to include it in the release. :)
Thank you so much!
I did say I wanted to have a stable release for this weekend. Good news on that front - I found what I think is a pretty solid solution for migration waves. I'm looking at current issues to see what else I can include in this release, then something should be out within the next couple of hours.It's the weekend now btw.
Meaning?
src/scanner.cpp: In member function ‘void Scanner::find_null_terminated_string()’:
src/scanner.cpp:283:62: error: no matching function for call to ‘qMin(uint, long unsigned int)’
src/scanner.cpp:283:62: note: candidate is:
/usr/include/QtCore/qglobal.h:1194:18: note: template<class T> const T& qMin(const T&, const T&)
src/scanner.cpp: In member function ‘void Scanner::find_number_or_address()’:
src/scanner.cpp:301:62: error: no matching function for call to ‘qMin(uint, long unsigned int)’
src/scanner.cpp:301:62: note: candidate is:
/usr/include/QtCore/qglobal.h:1194:18: note: template<class T> const T& qMin(const T&, const T&)
make: *** [bin/release/scanner.o] Error 1
Thanks for all the amazing work on this application!I checked in the fix. (I'm just now getting a linux VM up and running again)
I did run into a little difficulty compiling the latest release (0.6.12 source) in linux however. Last version was fine but now I get the following. Anybody got a clue?Code: [Select]src/scanner.cpp: In member function ‘void Scanner::find_null_terminated_string()’:
src/scanner.cpp:283:62: error: no matching function for call to ‘qMin(uint, long unsigned int)’
src/scanner.cpp:283:62: note: candidate is:
/usr/include/QtCore/qglobal.h:1194:18: note: template<class T> const T& qMin(const T&, const T&)
src/scanner.cpp: In member function ‘void Scanner::find_number_or_address()’:
src/scanner.cpp:301:62: error: no matching function for call to ‘qMin(uint, long unsigned int)’
src/scanner.cpp:301:62: note: candidate is:
/usr/include/QtCore/qglobal.h:1194:18: note: template<class T> const T& qMin(const T&, const T&)
make: *** [bin/release/scanner.o] Error 1
Thanks again DE!
Thanks for all the amazing work on this application!
I did run into a little difficulty compiling the latest release (0.6.12 source) in linux however. Last version was fine but now I get the following. Anybody got a clue?Code: [Select]src/scanner.cpp: In member function ‘void Scanner::find_null_terminated_string()’:
src/scanner.cpp:283:62: error: no matching function for call to ‘qMin(uint, long unsigned int)’
src/scanner.cpp:283:62: note: candidate is:
/usr/include/QtCore/qglobal.h:1194:18: note: template<class T> const T& qMin(const T&, const T&)
src/scanner.cpp: In member function ‘void Scanner::find_number_or_address()’:
src/scanner.cpp:301:62: error: no matching function for call to ‘qMin(uint, long unsigned int)’
src/scanner.cpp:301:62: note: candidate is:
/usr/include/QtCore/qglobal.h:1194:18: note: template<class T> const T& qMin(const T&, const T&)
make: *** [bin/release/scanner.o] Error 1
Thanks again DE!
diff -r 2a186e1e26f6 src/scanner.cpp
--- a/src/scanner.cpp Sat Feb 18 10:14:49 2012 -0600
+++ b/src/scanner.cpp Sat Feb 18 12:19:10 2012 -0600
@@ -280,7 +280,7 @@
QByteArray text = ui->le_null_terminated_string->text().toLocal8Bit();
get_brute_force_address_range(params.start_addr, params.end_addr);
- params.size = qMin((uint)text.size(), sizeof(params.data));
+ params.size = qMin((size_t)text.size(), sizeof(params.data));
memcpy(params.data, text.data(), params.size);
QByteArray needle((const char *)¶ms, sizeof(params));
@@ -298,7 +298,7 @@
QByteArray text = encode(ui->le_find_address->text().
toUInt(&ok, ui->rb_hex->isChecked() ? 16 : 10));
get_brute_force_address_range(params.start_addr, params.end_addr);
- params.size = qMin((uint)text.size(), sizeof(params.data));
+ params.size = qMin((size_t)text.size(), sizeof(params.data));
memcpy(params.data, text.data(), params.size);
QByteArray needle((const char *)¶ms, sizeof(params));
[info]
checksum=0xa42a074a
version_name=v0.34.01
complete=true
[addresses]
translation_vector=0x095c7bf8
language_vector=0x095c7be0
creature_vector=0x095868ac
dwarf_race_index=0x0956e240
squad_vector=0x095c47b4
[offsets]
word_table=0x001C
[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024
[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0148
current_job=0x0274
states=0x0
souls=0x05e8
labors=0x0604
happiness=0x0694
squad_ref_id=0x06f8
[soul_details]
skills=0x01D4
traits=0x01EC
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x000C
members=0x0044
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
[info]
checksum=0xf4fc8347
version_name=v0.34.02
complete=true
[addresses]
translation_vector=0x095ca018
language_vector=0x095ca000
creature_vector=0x09588ccc
dwarf_race_index=0x09570660
squad_vector=0x095c6bd4
[offsets]
word_table=0x001C
[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024
[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0148
current_job=0x0274
states=0x0
souls=0x05e8
labors=0x0604
happiness=0x0694
squad_ref_id=0x06f8
[soul_details]
skills=0x01D4
traits=0x01EC
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x000C
members=0x0044
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
<snip>
The turn_count offset for linux is 0x052b; should be the same for both version (I haven't tested on 0.34.02)There's quite a bit of fudge-factor when figuring the migration wave based on turn count. I'm going off my previous calculations of 1200 ticks per day, 28 days per month. Right now I'm grouping turn counts within a month of each other, but that could be upped to about 2.5 months or so if it needs correcting. So in reality a dwarf can fall behind by about 33600 ticks before he'll get bumped out of the wave.
A small caveat to this: I still have all my original dwarves, but not all have the same turn count: I've got one unconscious/stunned dwarf which turn count is 45 "ticks" below the others. He just was injured by a mis-organized cave-in. He hasn't waken up yet and I don't have the time right now to set my hospital to test whether its value will update when he wakes up, but it's something you should look into, I think.
Thanks for the release DE!
if ya'll are still adding features, I would kill for an option to turn off the "cannot talk to dwarf fortress" prompt that comes up when the connection to the game is lost.You already have that option, though :)
I tend to run therapist and DF from a batch file so it's kinda annoying to click "okay" to the prompt each time i start the game.
if ya'll are still adding features, I would kill for an option to turn off the "cannot talk to dwarf fortress" prompt that comes up when the connection to the game is lost.
I tend to run therapist and DF from a batch file so it's kinda annoying to click "okay" to the prompt each time i start the game.
Dwarf therapist shows all dwarves in the migration wave before they show up on the map.
Dwarf therapist shows all dwarves in the migration wave before they show up on the map.
It's not just that, though; it stays out of sync well beyond the period of time just before and after a wave arrives. And currently, Dwarf Therapist is missing one; DF claims 52 dwarves (in both z-menu summary and unit list), and DT lists only 51. (I do have it set to show children abd babies, so those aren' the missing ones.)
...you should have a linux dt that has the unofficial support for linux DF 0.34.02.
physical_attrs=0x3E4
strength=0x3E4
toughness=0x41C
endurance=0x438
agility=0x400
recuperation=0x454
disease_resistance=0x470
@ DwarfEngineer: Thx for the new version!
Btw, I've seen how you solved the migration wave problem. Simple and effective. ;-)
Hi all, kinda new here. I've done a lot of C++ code modding Civ4, in particular working on the DuneWars mod, so I've done some compiling before, but I'm not having any luck with the DT source code right now. I've cloned the repository to my computer using Hg and loaded the dwarftherapist.pro file in Qt (which this is my first time using, I've always worked in visual studios before), but upon trying to compile it (with no changes made) I get the following errors:I'll take a look at the Shishimar version and see how difficult it will be to merge. As for building, there are issues with Qt 4.8.0 that I didn't want to get into right at the moment, so I would recommend installing the 4.7.4 version of Qt (Direct Link (http://ftp://ftp.qt.nokia.com/qt/source/qt-win-opensource-4.7.4-mingw.exe)) for now. You'll have to go into the project settings and switch the platform to Qt 4.7.4 (PM me if you have issues with this - it can be tricky to find)
(http://img823.imageshack.us/img823/9320/image1wvq.jpg)
Is there something in Qt I'm missing or maybe an operating system issue (I'm running 64-bit windows 7 home premium)? Just grasping at straws right now. I'm wanting to get it compiling however to try to merge in the work shishimar did displaying physical attributes. I've already tracked down the offsets for the physical attributes*:Code: [Select]physical_attrs=0x3E4
strength=0x3E4
toughness=0x41C
endurance=0x438
agility=0x400
recuperation=0x454
disease_resistance=0x470
...So the rest should be a pretty straight forward merge. Personally I'd love to see this worked into the official version, it's so incredibly useful when picking out dwarves for the military.
*the official DT version only has the 'physical_attrs' tag, the others are only in the Shishimar version. Changing the 'physical_attrs' to the correct value in 6.12 didn't have any effect when enabling the three physical attributes available for a grid view to show, they all just show '-1', so I'm assuming that they are disabled in the code as of now.
@ DwarfEngineer: Thx for the new version!Thanks, I do wish that I had arrived at this approach earlier, I spent way too long looking for history entries that probably weren't there (I now think that DF is just using the "turn count" for each dwarf to generate the "She arrived at Blarglefast on 21st Malachite, 251" statements)
Btw, I've seen how you solved the migration wave problem. Simple and effective. ;-)
Appreciate the response. Unfortunately the link redirects to http://www.microfocus.com/products/rumba/rumba-product/index.aspx (http://www.microfocus.com/products/rumba/rumba-product/index.aspx) instead, so I'm SOL for now... lol. The internet as a whole has always been bad about not keeping any access to older versions of software available like like, so no surprise, just unfortunate. At a bare minimum I hoped to get the existing grid view strength, toughness, and agility columns displaying before I got too far into a game.The BBCode seems to be modifying the link. I'll spell it out - ftp://ftp.qt.nokia.com/qt/source/qt-win-opensource-4.7.4-mingw.exe
And currently, Dwarf Therapist is missing one; DF claims 52 dwarves (in both z-menu summary and unit list), and DT lists only 51. (I do have it set to show children abd babies, so those aren' the missing ones.)Would it be possible to sort dwarves in DT in the same way they're sorted in the Unit screen? It'd make finding stragglers a lot easier.
And it works :D
It's a straight merge of 6.12 with shishimar's added content, I didn't change a thing. The only thing I'm missing is the current_year index, you'll see that if you look at the age displayed at the top of the second image. If anyone can find that and if DE doesn't mind I can upload it for anyone who wants to use it.
And it works :DVery nice I would like that.
It's a straight merge of 6.12 with shishimar's added content, I didn't change a thing. The only thing I'm missing is the current_year index, you'll see that if you look at the age displayed at the top of the second image. If anyone can find that and if DE doesn't mind I can upload it for anyone who wants to use it.
And it works :D
chrisadams3997, I think everyone here wanna your version =) I'm just downloaded QT, DT project and now feel relived coz I can use your version instead of finding own solution.
<autoUpdateURL path="http://df.zweistein.cz/soundsense/soundpack"/>
Just FYI sound soundense: dropbox is slightly pissed off for abusing it do distribute so much data, so there is change of pack auto update location. This is, once again, current URL for automated update:Code: [Select]<autoUpdateURL path="http://df.zweistein.cz/soundsense/soundpack"/>
Sorry for inconvenience.
hg clone https://code.google.com/p/dwarftherapist/How to install it correctly ?
It creates a dwarftherapist folder with the source, memory files..;
cd dwarftherapist
qmake
make (it compile without error)
create the v0.34.02.ini in his folder
cd bin/release
./DwarfTherapist to run it
It run and closes instantly, I can see the window for maybe half of a second
umm, did you mean to put that in the sound sense topic zwei? lol
umm, did you mean to put that in the sound sense topic zwei? lol
Well, since SS in LNP is now configured to use update server that is no longer working, it very much belongs here :-)
... This is the Dwarf Therapist thread, ...
Well, here's the Link to the DT 6.12/shishimar merge (http://www.mediafire.com/?fbc2b6z4dr8irgd) I did. I've been using it for a few days without any problem, so anybody who wants to is free to use it. I've only found the windows offsets for the physical attributes, if someone on linux finds them I can update it. I also haven't looked any further for the current year index, so that's still needed for windows and linux for it to display ages correctly. Here's a link for the source* (http://www.mediafire.com/?srsb93u8naj6ups) as well for anyone inclined to look.
And for those that missed this before, it adds in the physical attributes on the dwarf details pane as well as enables them to be shown in grid views (with strength, toughness, and endurance shown by default in the military grid view). It also should handle gender/caste correctly. None of the work is mine originally, I've just brought in what shishimar did for DT 6.10 into the new 6.12 version.
* I merged everything that shishimar added that didn't directly conflict with the 6.12 changes. While most was directly related to the physical attributes and gender/caste handling, some of that added code was part of what looks like an incomplete attempt to add in the ability to list your tame animals and details about them that it looks like he didn't implement (as far as I've noticed so far, haven't seen anywhere to actually see your animals in the program.) I left it in for expediency in case any of the code additions I wanted to actually bring in relied on some of that code, but if this is brought into an official version, that should probably be selectively culled out of it. I also made no attempt to compare his methods adding these features in compared with how the code is otherwise organized and implemented, so again, for any merges with official versions, it'd be good to take a closer look at the actual implementation and make any changes needed for consistency. But all that said, from a practical standpoint, it all seems to work perfectly with the new version, which is all I set out to do.
Hi everyone... I have trouble installing DT on linux, I run Ubuntu 64bits.
Here is what I did :Quotehg clone https://code.google.com/p/dwarftherapist/How to install it correctly ?
It creates a dwarftherapist folder with the source, memory files..;
cd dwarftherapist
qmake
make (it compile without error)
create the v0.34.02.ini in his folder
cd bin/release
./DwarfTherapist to run it
It run and closes instantly, I can see the window for maybe half of a second
Thanks in advance.
* I merged everything that shishimar added that didn't directly conflict with the 6.12 changes. While most was directly related to the physical attributes and gender/caste handling, some of that added code was part of what looks like an incomplete attempt to add in the ability to list your tame animals and details about them that it looks like he didn't implement (as far as I've noticed so far, haven't seen anywhere to actually see your animals in the program.) I left it in for expediency in case any of the code additions I wanted to actually bring in relied on some of that code, but if this is brought into an official version, that should probably be selectively culled out of it. I also made no attempt to compare his methods adding these features in compared with how the code is otherwise organized and implemented, so again, for any merges with official versions, it'd be good to take a closer look at the actual implementation and make any changes needed for consistency. But all that said, from a practical standpoint, it all seems to work perfectly with the new version, which is all I set out to do.The animal stuff is on a new tab you have to click this
Hi everyone... I have trouble installing DT on linux, I run Ubuntu 64bits.There are instructions for building in linux here if you have not seen them already. (https://code.google.com/p/dwarftherapist/wiki/BuildingDwarfTherapist)
Here is what I did :Quotehg clone https://code.google.com/p/dwarftherapist/How to install it correctly ?
It creates a dwarftherapist folder with the source, memory files..;
cd dwarftherapist
qmake
make (it compile without error)
create the v0.34.02.ini in his folder
cd bin/release
./DwarfTherapist to run it
It run and closes instantly, I can see the window for maybe half of a second
Thanks in advance.
The animal stuff is on a new tab you have to click this
and add the new tab.
shishimar never had it show up by default for some reason.
i'm still curious to see your source but the link you've provided seems to be for another version?
- updated the default views to include all attributes on the military tabI changed the view to show all six at first too, but man it clutters it up so that it's a lot harder to read, in my opinion, I changed it back in a hurry. Endurance, healing, and disease resistance are best left in the details pane I think, from a readability and usability standpoint.
edit:
Looked at what you did just now and diffed the sources, mostly cosmetic differences.Quote- updated the default views to include all attributes on the military tabI changed the view to show all six at first too, but man it clutters it up so that it's a lot harder to read, in my opinion, I changed it back in a hurry. Endurance, healing, and disease resistance are best left in the details pane I think, from a readability and usability standpoint.
Hi everyone... I have trouble installing DT on linux, I run Ubuntu 64bits.There are instructions for building in linux here if you have not seen them already. (https://code.google.com/p/dwarftherapist/wiki/BuildingDwarfTherapist)
Here is what I did :Quotehg clone https://code.google.com/p/dwarftherapist/How to install it correctly ?
It creates a dwarftherapist folder with the source, memory files..;
cd dwarftherapist
qmake
make (it compile without error)
create the v0.34.02.ini in his folder
cd bin/release
./DwarfTherapist to run it
It run and closes instantly, I can see the window for maybe half of a second
Thanks in advance.
You did not install the .ini correctly for one thing.
First you need to copy the etc directory to bin/release and then put the v0.34.02.ini in bin/release/etc/memory_layouts/linux.
Also you need to make a directory "log" in bin/releaseor it will crash at startupif you want to read logs if something goes wrong.
You may need to run using
sudo ./DwarfTherapist
to get around a security feature (to prevent memory hacking) in Ubuntu as well.
It is working for me in Ubuntu 11.04 64bit, what version of Ubuntu are you using?
I like the columns better myself, it makes it easier to pick the strongest dwarfs and put them in the military without having to read the dwarf details for hundreds of dwarfs in a mature fortress.
edit:
Looked at what you did just now and diffed the sources, mostly cosmetic differences.Quote- updated the default views to include all attributes on the military tabI changed the view to show all six at first too, but man it clutters it up so that it's a lot harder to read, in my opinion, I changed it back in a hurry. Endurance, healing, and disease resistance are best left in the details pane I think, from a readability and usability standpoint.
I just did a quick diff myself after you posted the new source file, the few differences are indeed cosmetic. The columns didn't bother me though, I've already got a billion of them on the labour tab so 3 more on the military tab didn't phase me. :P Ah well to each their own.
strength=0x328
agility=0x344
toughness=0x360
endurance=0x37C
recuperation=0x398
disease_resistance=0x3B4
Thanks a lot, it works now ! Moving the etc/ folder did the trick.Your welcome.
Hi everyone... I have trouble installing DT on linux, I run Ubuntu 64bits.There are instructions for building in linux here if you have not seen them already. (https://code.google.com/p/dwarftherapist/wiki/BuildingDwarfTherapist)
Here is what I did :Quotehg clone https://code.google.com/p/dwarftherapist/How to install it correctly ?
It creates a dwarftherapist folder with the source, memory files..;
cd dwarftherapist
qmake
make (it compile without error)
create the v0.34.02.ini in his folder
cd bin/release
./DwarfTherapist to run it
It run and closes instantly, I can see the window for maybe half of a second
Thanks in advance.
You did not install the .ini correctly for one thing.
First you need to copy the etc directory to bin/release and then put the v0.34.02.ini in bin/release/etc/memory_layouts/linux.
Also you need to make a directory "log" in bin/releaseor it will crash at startupif you want to read logs if something goes wrong.
You may need to run using
sudo ./DwarfTherapist
to get around a security feature (to prevent memory hacking) in Ubuntu as well.
It is working for me in Ubuntu 11.04 64bit, what version of Ubuntu are you using?
Suggestion: Allow renaming multiple dwarves at once. When I get a migrant wave, I find the useful ones, shuffle labor a little, and have a lot of haulers left over. I name them all to "Blank" so I can easily find any Blank to fill a new job. Trouble is running through each useless migrant and renaming them. If I could select multiple dwarves and give them all a nickname at once, this would make things entirely easier, and honestly I'm not sure why this isn't allowed anyways.
Btw, when changing nicknames, it is necessary to update all three of the unit, soul, and the historical figure entry like the game does (plus of course the assumed identity now); otherwise it is inconsistent, and the most likely cause of the long known quirk of military members losing their DT nicknames from time to time.Please, please fix this bug
I know about that, but I usually work off nickname. When you try to assign multiple dwarves a nickname, it says something like "Whoa there cowboy, slow down! You can only do that one at a time!"
When Therapist hits a vampire dorf, does it read his real name or his identity?
If the former, would it have trouble editing that dorf's labors?
...I also haven't looked any further for the current year index, so that's still needed for windows and linux for it to display ages correctly...
When Therapist hits a vampire dorf, does it read his real name or his identity?
If the former, would it have trouble editing that dorf's labors?
I was just going to come post a bug about this dwarf showing up with the wrong name, but realized with your post (and many former memberships) that she was a vampire.
When Therapist hits a vampire dorf, does it read his real name or his identity?
If the former, would it have trouble editing that dorf's labors?
I was just going to come post a bug about this dwarf showing up with the wrong name, but realized with your post (and many former memberships) that she was a vampire.
Will this bug be fixed? I do not like this cheaty way to discover vampires, It breaks all the investigation fun for me.
This bug exists in Dwarf Fortress, not Dwarf Therapist, and if you read the news posted on bay12games.com, you will see that it is already fixed in the next version (not out yet as of this post).
This bug exists in Dwarf Fortress, not Dwarf Therapist, and if you read the news posted on bay12games.com, you will see that it is already fixed in the next version (not out yet as of this post).
Make sure you have the 'Dwarf Details' pane displayed by going to Windows>Docks>Dwarf Details, and make sure it's not hidden behind the 'Pending Changes' tab on the right side of the screen. See this image: http://imageshack.us/photo/my-images/607/image1ub.jpg/ (http://imageshack.us/photo/my-images/607/image1ub.jpg/), and notice that dwarf details and pending changes are arranged in two tabs with one or the other showing. Hope that helps :) .Uh?? is this new? the dwarf attributes showing in the details screen, I mean... Mine only shows happiness I'm using version 0.6.11
This bug exists in Dwarf Fortress, not Dwarf Therapist, and if you read the news posted on bay12games.com, you will see that it is already fixed in the next version (not out yet as of this post).
This bug exists in Dwarf Fortress too - but unless Toady changed the way vampire identities are stored in memory, DT will have to fix it on its own: currently the displayed vampire identity name is kept completely separate and not mirrored to the usual unit name fields. I handled this in DFHack's rename unit command, but it involves several data structures completely new to DT.
Make sure you have the 'Dwarf Details' pane displayed by going to Windows>Docks>Dwarf Details, and make sure it's not hidden behind the 'Pending Changes' tab on the right side of the screen. See this image: http://imageshack.us/photo/my-images/607/image1ub.jpg/ (http://imageshack.us/photo/my-images/607/image1ub.jpg/), and notice that dwarf details and pending changes are arranged in two tabs with one or the other showing. Hope that helps :) .Uh?? is this new? the dwarf attributes showing in the details screen, I mean... Mine only shows happiness I'm using version 0.6.11
I've been playing around with the Script Editor for finding out which of my Dwarves actually have any (useful/non-default) labors enabled, among other filtering tasks, and am wondering where the scripts themselves are stored. I see that there is probably supposed to be a menu option to edit existing scripts, but that menu appears to be disabled at the moment. In Lieu of that working, where do the scripts get stored between executions of DT? I'd like to go back and tinker with one i've already written, but don't exactly recall what all i put into it.
Thanks,
~Moz
Nooooooo! latest version broke it again... :'(
Looking forward to a 34.03-compatible update with bated breath. Profuse thanks in advance.Unfortunately I won't be able to post an update until I get done with work - around 4:30 CST. Hopefully there's no major offset changes.
Mac Mini is in. Trying to get it setup in headless mode so I can remote VNC instead of having it hooked up all the time. I'm out of town this weekend, but OSX support is a top priority.
Unfortunately I won't be able to post an update until I get done with work - around 4:30 CST. Hopefully there's no major offset changes.
[info]
checksum=0x4f4cd85b
version_name=v0.34.03 (graphics)
complete=true
[addresses]
translation_vector=0x017dd65c
language_vector=0x017dd63c
creature_vector=0x01799748
dwarf_race_index=0x015c5ebc
squad_vector=0x017d7a48
[offsets]
word_table=0x0000003c
string_buffer_offset=0x0000
[word_offsets]
base=0x0000
noun_singular=0x001C
noun_plural=0x0038
adjective=0x0054
verb=0x008C
present_simple_verb=0x00A8
past_simple_verb=0x00C4
past_participle_verb=0x00E0
present_participle_verb=0x00FC
[dwarf_offsets]
first_name=0x0000
nick_name=0x001C
last_name=0x0038
custom_profession=0x006C
profession=0x0088
race=0x008C
flags1=0x00E0
flags2=0x00E4
sex=0x00F8
id=0x00FC
recheck_equipment=0x01C0
birth_year=0x022C
current_job=0x030C
physical_attrs=0x3C4
turn_count=0x0668
states=0x06BC
souls=0x0764
likes=0x07A0
labors=0x078C
squad_ref_id=0x08AC
happiness=0x082C
[soul_details]
skills=0x0200
traits=0x0224
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x003C
members=0x0088
[position_offsets]
token=0x0000
flags=0x0020
general_name_singular=0x00E8
general_name_plural=0x0104
male_name_singular=0x0158
male_name_plural=0x0174
female_name_singluar=0x0120
female_name_plural=0x013C
custom_color_red=0x0382
custom_color_green=0x0380
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
[info]
checksum=0x5502e97b
version_name=v0.34.03
complete=true
[addresses]
translation_vector=0x095cdbfc
language_vector=0x095cdbe4
creature_vector=0x0958c8ac
dwarf_race_index=0x09574240
squad_vector=0x095ca7b4
[offsets]
word_table=0x001C
[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024
[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0148
current_job=0x0274
turn_count=0x052b
states=0x0
souls=0x05e8
labors=0x0604
happiness=0x0694
squad_ref_id=0x06f8
[soul_details]
skills=0x01D4
traits=0x01EC
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x000C
members=0x0044
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
I've made a few more updates to the branch I've been playing around with:
This is... funky. First noticed that all attributes show up as "15" which is clearly a bug but I don't use that very much, so meh.Could you post your fort on dffd please? I'll take a look at it tonight when I get a chance. (Haven't had a chance to actually play yet)
Secondly noticed that it counts 31 dwarves, displays 11, and my population is 15. The 4 other dwarves are all adults and show no spectacular features, they simply don't show up in Therapist's list. This was after one migrant wave, where some appeared on Therapist and the 4 others did not.
I've made a few more updates to the branch I've been playing around with:
- added all the soul's mental attributes (spatial sense, focus, willpower, etc..)
- added a new default tab for the added attributes (includes both physical and mental together)
- added an additional option to draw the header text from bottom to top
- slightly tweaked the threshold for traits so more of them are visible
- fixed a bug when applying filters while hiding children/babies
- included the current year offset so ages show up properly
(image)
you can download it here and view the source code here
That would probably be prudent.QuoteI've made a few more updates to the branch I've been playing around with:
- added all the soul's mental attributes (spatial sense, focus, willpower, etc..)
- added a new default tab for the added attributes (includes both physical and mental together)
- added an additional option to draw the header text from bottom to top
- slightly tweaked the threshold for traits so more of them are visible
- fixed a bug when applying filters while hiding children/babies
- included the current year offset so ages show up properly
(image)
you can download it here and view the source code here
Much <3. I've been waiting for complete attribute displays in Therapist so I can make some educated assignments for migrants, without having to go screen...by screen....by screen. Since the chmod days. So, many thank yous!
I've made a few more updates to the branch I've been playing around with:
- added all the soul's mental attributes (spatial sense, focus, willpower, etc..)
Splinterz, can you elaborate on how you're finding the offset for current year? If I have a reliable way of finding that, I'll work on incorporating your changes into the official build.
This is... funky. First noticed that all attributes show up as "15" which is clearly a bug but I don't use that very much, so meh.Hmm, not seeing quite the same thing - loading from your save it's displaying 12 out of your 15. Not seeing an issue with the attributes either.
Secondly noticed that it counts 31 dwarves, displays 11, and my population is 15. The 4 other dwarves are all adults and show no spectacular features, they simply don't show up in Therapist's list. This was after one migrant wave, where some appeared on Therapist and the 4 others did not.
My save had a doctor die. If you keep it running it should produce a ghost in due time. The fact that I got 3-4 vampires in a wave of 9 is astonishing.I'm actually not positive on that - it's weird, if I let the game advance a few seconds all 15 dwarves show up, so I'm thinking that flag is completely bogus.
See this post (http://www.bay12forums.com/smf/index.php?topic=66525.msg3020672#msg3020672).I'm confused... there are two versions of DT now? one vanilla as published on the OP, and a "merged" one that shows the extra attributes?? merged with what?
The fact that I got 3-4 vampires in a wave of 9 is astonishing.
Ha-HA! Well played Orius!
So to be clear, have we fixed the problem of Turned *Undead/Evil Rain* Dwarves still appearing in the Therapist???So no answer???
No answer yet. I need a save file from 34.03 with the condition, if possible.So to be clear, have we fixed the problem of Turned *Undead/Evil Rain* Dwarves still appearing in the Therapist???So no answer???
[info]
checksum=0x6c11a27c
version_name=v0.34.04
complete=true
[addresses]
translation_vector=0x095cdbfc
language_vector=0x095cdbe4
creature_vector=0x0958c8ac
dwarf_race_index=0x09574240
squad_vector=0x095ca7b4
[offsets]
word_table=0x001C
[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024
[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0148
current_job=0x0274
turn_count=0x052b
states=0x0
souls=0x05e8
labors=0x0604
happiness=0x0694
squad_ref_id=0x06f8
[soul_details]
skills=0x01D4
traits=0x01EC
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x000C
members=0x0044
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
Well there is a 34.02 one. Let me go get it...No answer yet. I need a save file from 34.03 with the condition, if possible.So to be clear, have we fixed the problem of Turned *Undead/Evil Rain* Dwarves still appearing in the Therapist???So no answer???
O hai, new DF version out - v0.34.04 due to a crash on save issue.
Here's your fresh 0.6.12 dt ini file (for Linux):Code: [Select][info]
checksum=0x6c11a27c
version_name=v0.34.04
complete=true
[addresses]
translation_vector=0x095cdbfc
language_vector=0x095cdbe4
creature_vector=0x0958c8ac
dwarf_race_index=0x09574240
squad_vector=0x095ca7b4
[offsets]
word_table=0x001C
[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024
[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0148
current_job=0x0274
turn_count=0x052b
states=0x0
souls=0x05e8
labors=0x0604
happiness=0x0694
squad_ref_id=0x06f8
[soul_details]
skills=0x01D4
traits=0x01EC
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x000C
members=0x0044
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
Hope this helps ^^
@Mattias,
change complete=true to complete=false and try to run it that way. Also, make sure you're running 0.34.04 and not 0.34.03 from this morning. And you're running DT 0.6.12, not one of the modified source trees but DE's version.
Can you make the log directory and get me the run.log from it failing?
I'm actually not positive on that - it's weird, if I let the game advance a few seconds all 15 dwarves show up, so I'm thinking that flag is completely bogus.
See this post (http://www.bay12forums.com/smf/index.php?topic=66525.msg3020672#msg3020672).I'm confused... there are two versions of DT now? one vanilla as published on the OP, and a "merged" one that shows the extra attributes?? merged with what?
And from the last posts it seems its getting integrated in the new version? was that a beta version or something?
[info]
checksum=0x4f4d9726
version_name=v0.34.04 (graphics)
complete=true
[addresses]
translation_vector=0x017dd65c
language_vector=0x017dd63c
creature_vector=0x01799748
dwarf_race_index=0x015c5ebc
squad_vector=0x015cb24c
[offsets]
word_table=0x0000003c
string_buffer_offset=0x0000
[word_offsets]
base=0x0000
noun_singular=0x001C
noun_plural=0x0038
adjective=0x0054
verb=0x008C
present_simple_verb=0x00A8
past_simple_verb=0x00C4
past_participle_verb=0x00E0
present_participle_verb=0x00FC
[dwarf_offsets]
first_name=0x0000
nick_name=0x001C
last_name=0x0038
custom_profession=0x006C
profession=0x0088
race=0x008C
flags1=0x00E0
flags2=0x00E4
sex=0x00F8
id=0x00FC
recheck_equipment=0x01C0
birth_year=0x022C
current_job=0x030C
physical_attrs=0x3C4
turn_count=0x0668
states=0x06BC
souls=0x0764
likes=0x07A0
labors=0x078C
squad_ref_id=0x08AC
happiness=0x082C
[soul_details]
skills=0x0200
traits=0x0224
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x003C
members=0x0088
[position_offsets]
token=0x0000
flags=0x0020
general_name_singular=0x00E8
general_name_plural=0x0104
male_name_singular=0x0158
male_name_plural=0x0174
female_name_singluar=0x0120
female_name_plural=0x013C
custom_color_red=0x0382
custom_color_green=0x0380
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
Still looking for a fortress 34.03 or 34.04 with confirmed vampires.
Still looking for a fortress 34.03 or 34.04 with confirmed vampires.
on a side note, tell me your secret to finding the cur_year offset! :DThat one's actually quite easy: find the vtable for history_event_collectionst and check the 2nd-last method in it (the last one is the destructor) - it sets one field to the current year and another field to the current time.
i've fixed the attribute offsets in my branch and added the *.ini files for 34.03 and 34.04.
download (http://www.mediafire.com/?2diyra29h0pkroz)
source (http://code.google.com/r/splintermind-attributes/)
the current_year offset for 34.03 and 34.04 (i think?) is 0xfcc1f0
in regards to the current_year offset i've been trying to find a consistent way to locate it as well (i've been checking dfhack's xml symbols files), and i've found that it seems to always be offset a static length from the world address, specifically 0x7B9AF8 before the world address.
edit: i posted in the dfhack thread with an issue and asked about the cur_year they find:on a side note, tell me your secret to finding the cur_year offset! :DThat one's actually quite easy: find the vtable for history_event_collectionst and check the 2nd-last method in it (the last one is the destructor) - it sets one field to the current year and another field to the current time.
I just noticed, that all the stats in the new version are 888 rather than the specific stats they had before (I was using that combined version someone uploaded)You'll have to download the updated ini files for your version of dwarf therapist then since the layouts are not currently supported in the official verison. I believe the new ini file was posted somewhere in this thread.
I'm using the 34.03 / 34.04 version in splinterz's post with 34.04, and while the actual numbers are being displayed correctly the descriptions and the numbers (or glyphs) in the main view are off. I'm getting a range of range of odd numbers from 1 to 13 and a dwarf with 1033 agility being described as clumsy. This happens with both a save copied from 34.03 and a fortress with a 34.04-generated world.
Did ya check that Savefile I posted with the Husks and such appearing as Citizens of the Fort despite not being part of the fort???
Yeah, pretty much every attribute with a seven-number range doesn't have description text for the middle one. The strangest thing is that it's been working fine in DT up until this version.yes i removed the 'average' descriptions i had put in previously when i remapped the groupings for the attributes because they were misaligned slightly. i'll have them added back soon enough though with the proper ranges, huzzah!
Did ya check that Savefile I posted with the Husks and such appearing as Citizens of the Fort despite not being part of the fort???i've briefly looked into this and unfortunately dwarf husk people don't seem to have any of the usual flags checked to not include them. we'll have to find another way to identify dwarves that aren't really dwarves. :-\ but the good news is all the strangeness with ghosts and vampire ghosts and people who appear to be able to see but have eye problems (don't ask) not appearing/appearing in dt seems to be working ok. anyway, sleeps for me.
There's the fake name bit, vampires will come to your fort with a fake name, but Therapist displays the real name. I caught a vampire last night this way.
There's the fake name bit, vampires will come to your fort with a fake name, but Therapist displays the real name. I caught a vampire last night this way.
That's arguably cheating though, defeats the whole purpose of vampires being able to have fake identities, and all the guesswork involved in identifying one.
Are you talking about a just a fort where a child has been kidnapped, or are you looking for a fort where the kidnapped child has returned?kidnapped and has left the map. i want to ensure they're not showing up in dt once they're gone.
Are you talking about a just a fort where a child has been kidnapped, or are you looking for a fort where the kidnapped child has returned?kidnapped and has left the map. i want to ensure they're not showing up in dt once they're gone.
was the issue with dwarfs not appearing related to injured historical migrants? as that seems to be a common trend in my fort... hopefully i can see them now.
his 3rd finger left hand is gone. he can see fine, course after he died its a bit hard to prove that, hes in one of the coffins in my managers dining room.yeah it's doing something strange behind the scenes. in the save i tested the dwarves missing from therapist didn't show any signs of damage in game, however it was still setting a flag that they had some damaged vision parts, which for reasons unknown therapist then flagged as dead and excluded them.
Making good progress on OSX - need to do a bit more testing before releasing a betaI just wanted to say, thank you! You just made my day, waiting patiently on your OS X port so I can finally play DF 34.0x without using Wine or going to my Windows partition.
I actually could use a beta tester or two.
I'm working on the packaging of DT, and need to know if it will run on someone else's system. (I may need to figure out how to include Qt redistributables)
If you're interested in testing, please try this version (http://dwarftherapist.googlecode.com/files/DwarfTherapist-0.6.12b01.dmg) with v0.34.04 of Dwarf Fortress.
I actually could use a beta tester or two.
I'm working on the packaging of DT, and need to know if it will run on someone else's system. (I may need to figure out how to include Qt redistributables)
If you're interested in testing, please try this version (http://dwarftherapist.googlecode.com/files/DwarfTherapist-0.6.12b01.dmg) with v0.34.04 of Dwarf Fortress.
Yeah, it looks like it's complaining about not having Qt installed.Spoiler (click to show/hide)
Thanks for testing. I think I might have it worked out if you're willing to give it another try.
DF OSX 0.6.12b02 (http://dwarftherapist.googlecode.com/files/DwarfTherapist-0.6.12b02.dmg)
Incidentally, did the installer(dmg, package, whatever) look/work as expected?
Could someone post memory mapping for v0.34.04 for linux?
In kionmaru's version dwarves second names are displayed as Unknownunknown.
And why memory mappings for linux version are updated much less often than for windows? Latest mappings for linux is for 0.31.25!
Thanks in advance.
[info]
checksum=0x6c11a27c
version_name=v0.34.04
complete=true
[addresses]
translation_vector=0x095cdbfc
language_vector=0x095cdbe4
creature_vector=0x0958c8ac
dwarf_race_index=0x09574240
squad_vector=0x095ca7b4
[offsets]
word_table=0x001C
[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024
[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0148
current_job=0x0274
turn_count=0x052b
states=0x0
souls=0x05e8
labors=0x0604
happiness=0x0694
squad_ref_id=0x06f8
[soul_details]
skills=0x01D4
traits=0x01EC
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x000C
members=0x0044
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
By only presenting what is significantly different from the norm, I firmly believe you make the information much more accessible, instead of flooding the screen with almost every trait for every dwarf.
@DwarfEngineer - Is m_current_year actually referenced or used anywhere right now?Not in vanilla DwarfTherapist, it's part of preparations to merge in some of these other changes that are floating around. (chrisadams & splinterz changes)
@DwarfEngineer - Is m_current_year actually referenced or used anywhere right now?Not in vanilla DwarfTherapist, it's part of preparations to merge in some of these other changes that are floating around. (chrisadams & splinterz changes)
@kionmaru, thanks. That config works perfectly.
Current year looks like it's always going to be the last address (the address closest to dwarf_race_index) on v34.04 linux its: 0x09571d40@DwarfEngineer - Is m_current_year actually referenced or used anywhere right now?Not in vanilla DwarfTherapist, it's part of preparations to merge in some of these other changes that are floating around. (chrisadams & splinterz changes)
Thanks - I went through your sources and couldn't find anything for it; scan for current year gives me a whole slew of addresses, none of which seem to quite resolve to an integer or word that all appear to be -1. I didn't dig deeper then that.@kionmaru, thanks. That config works perfectly.
You're more than welcome :) Glad to hear it's behaving itself.
Current year looks like it's always going to be the last address (the address closest to dwarf_race_index) on v34.04 linux its: 0x09571d40@DwarfEngineer - Is m_current_year actually referenced or used anywhere right now?Not in vanilla DwarfTherapist, it's part of preparations to merge in some of these other changes that are floating around. (chrisadams & splinterz changes)
Thanks - I went through your sources and couldn't find anything for it; scan for current year gives me a whole slew of addresses, none of which seem to quite resolve to an integer or word that all appear to be -1. I didn't dig deeper then that.@kionmaru, thanks. That config works perfectly.
You're more than welcome :) Glad to hear it's behaving itself.
I'm updating the scanner script to report the last (and most likely) address.
On mine it's not reporting the correct offset at all then. 0x09571d40 is indeed an integer which appears to be correct; here's the list I get:Odd. Couple things you could check I guess - 1. There is a newer revision which fixed an issue for OSX/Linux scanning, and 2. The scanner is intended to be run against a freshly generated world with medium history (i.e. starting on year 251)
current year = 0x08c8ea8c (uncorrected:0x08c8ea8c)
current year = 0x08c8eaa4 (uncorrected:0x08c8eaa4)
current year = 0x08c8eae8 (uncorrected:0x08c8eae8)
current year = 0x08c8eb28 (uncorrected:0x08c8eb28)
current year = 0x08c8eb64 (uncorrected:0x08c8eb64)
current year = 0x08c8eba4 (uncorrected:0x08c8eba4)
current year = 0x08cab2b2 (uncorrected:0x08cab2b2)
current year = 0x08ceb760 (uncorrected:0x08ceb760)
current year = 0x08dbf16c (uncorrected:0x08dbf16c)
current year = 0x08dbf778 (uncorrected:0x08dbf778)
current year = 0x08dbfc10 (uncorrected:0x08dbfc10)
I can upload the world to dffd, it was genned with 0.34.04.
And just to verify, current_year should be in the [addresses] section if I'm reading your sources correctly, is that right?
Odd. Couple things you could check I guess - 1. There is a newer revision which fixed an issue for OSX/Linux scanning, and 2. The scanner is intended to be run against a freshly generated world with medium history (i.e. starting on year 251)
I think I was making this harder than it needed to be. One more try -
Dwarf Therapist OSX 0.6.12b03 (http://dwarftherapist.googlecode.com/files/DwarfTherapist-0.6.12b03.dmg)
I'll work on the universal version - I don't know that I'll really be able to test it though.
Could someone post memory mapping for v0.34.04 for linux?Linux support is coming back. I've had to recreate almost all of my build scripts & environment due to a system crash a while back. Also, building for each architecture/distribution takes a good chunk of time, so I'm trying to automate the process.
In kionmaru's version dwarves second names are displayed as Unknownunknown.
And why memory mappings for linux version are updated much less often than for windows? Latest mappings for linux is for 0.31.25!
Thanks in advance.
I think I was making this harder than it needed to be. One more try
I'll work on the universal version - I don't know that I'll really be able to test it though.
I've just checked out splinterz's fix, and indeed all the attributes seem to be displaying properly. Great job there :D.
I've been thinking about ways to present the attribute data graphically better. The problem with using the same draw method as for skills is that it floods the 'attributes' pane with too much information. To be more precise, the reason it doesn't overload the labors tab is that most cells are empty or close to it, which makes picking out the important information (who is good at what skills) easy. If instead everyone had some skill in everything, you'd have the same problem as what the attributes pane is producing. To improve it I've tried a little different approach:
snip...
Instead of filling every square with something, which makes it hard to pick strengths and weaknesses out at a glance (which is what we're looking for), average attributes display nothing -only once a attribute is above or below normal do you get a graphical change, with less than average showing in red, better than average in black, the size telling you how much better or worse.
The next thing I want to do is create several more default grid views that individually only show a subset of the attributes important to a certain 'class' of jobs. For instance one for craftsdwarf related skills (creativity, kinesthetic sense, spacial sense, the relevant physical traits), with the idea being that it'd give a quick way to look over new immigrants for those well suited to train in a given skill.
I'm putting this up to download, but ultimately I'm not looking to maintain this separate from splinterz', I'm hoping he incorporates it into his, but for now here are the files and source:
Download (http://www.mediafire.com/?c7adhf3nk8zhtha)
Source (http://www.mediafire.com/?vs4637c23e5do4f)
I've also made two small changes reverting back to behaivor in older versions, average attributes have no text descriptions (this is more readable to me, text indicates it's not average), and changed it back to only display traits more than 10 points off of average, for similar reasons. By only presenting what is significantly different from the norm, I firmly believe you make the information much more accessible, instead of flooding the screen with almost every trait for every dwarf.
i completely agree with your observations. i think i've been so focused on getting attributes showing up properly that i've drifted from the real purpose of showing them: clear, practical data to make decisions. since you've given me the go ahead to incorporate this, i will most certainly be doing so, cheers!
Thanks for making all the effort to support OSX, by the way. This is awesome! :)I'll second that!
Hi, I'm testing the latest posted mac version, from this thread. (0.6.12b03). Some observations:Thanks very much for the report, glad to hear that it's at least workable.
Bug:Labels "Construct ?? Crutch (208)" instead of "Clean Self"
As stated before-has two icons- though every mac version I've seen has this.
As opposed to other versions, does not appear to slow DF for the next unpausing after a write- much quicker.
The interface is not perfectly responsive, though still very usable.
Bug:The grid view editor works well, though the attributes (strength, agility, etc) all appear as unknown (-1).
Bug?: The filter dwarves box doesn't appear to do very much, apart from show a hanging filtered list. Expected behavior would be to highlight the selected dwarf.
It appears very stable, having run continuously for over 8 hours (~220 dwarves) with no loss of function.
I'll continue 'testing' and will report back anything else relevant.Thanks for making all the effort to support OSX, by the way. This is awesome! :)I'll second that!
Very impressive, no serious bugs found, a great tool to use!
1. I'm an unusual OSX user in that my main login account is not an administrator. So when something needs admin access, I have to type in the admin's name and password. For some reason, Therapist asks for admin access every time I launch it, so I am having to enter the admin name and password each time. I can live with that, but it's unusual for a program to do that.
I think I was making this harder than it needed to be. One more try -
Dwarf Therapist OSX 0.6.12b03 (http://dwarftherapist.googlecode.com/files/DwarfTherapist-0.6.12b03.dmg)
I'll work on the universal version - I don't know that I'll really be able to test it though.
I expect there's no getting around that. Consider what DT does - it reads, then modifies, the working memory of _some other program_. That's generally a highly questionable thing for an application to do. OSX notices this, and insists on getting admin access for DT so it knows you know enough about the system you're on to allow it to do that. Honestly, it's good behavior on the part of an OS.
I just wanted to second chrisadam3997's observations. After using the newest attribute enabled DT, like was said, the fact everyone has some sort of attribute makes the display used much less useful. With chrisadam3997's color inclusions, it's about 25% more readable immediately.
I'd suggest using a larger color scale. It may end up looking like rainbow vomit, but it might be worth a try.
So hot = low, cool = high.
Red - Lowest
Yellow - Below Average
Green - Average
Blue - Above Average
Black - Exceptional
There might be some benefit in investigating a totally different view for attributes. Like, a histogram (http://en.wikipedia.org/wiki/File:Histogram_of_arrivals_per_minute.svg) would be freaking amazing. Better if we were to, say, double click on a dwarf entry and get a re-sizable window for them displaying a histogram of that dwarf's attributes. Actually, it would work smashingly for traits as well, especially if you could mouse over each entry in the histogram and get DF's text description of their trait value. While not necessary, it would preserve the flavor in the current trait view, where it gives you a number and a description.
I appreciate that's probably a fair amount of work for something as non-essential to DT as attributes and traits.
Yeah, that's an outstanding issue with linux as well. Basically it has to do with no memory being allocated where therapist can stick the nickname / custom profession name. I'm still looking into options for this, but it will probably (unfortunately) involve code injection or something to that effect.I think I was making this harder than it needed to be. One more try -
Dwarf Therapist OSX 0.6.12b03 (http://dwarftherapist.googlecode.com/files/DwarfTherapist-0.6.12b03.dmg)
I'll work on the universal version - I don't know that I'll really be able to test it though.
It appears that profession changes are not working. The existing professions of dwarves are correctly displayed. Enabling/disabling labors either singly or by selecting a 'profession' toggles the labors correctly. The profession names are not updated, however,
Yeah, that's an outstanding issue with linux as well. Basically it has to do with no memory being allocated where therapist can stick the nickname / custom profession name. I'm still looking into options for this, but it will probably (unfortunately) involve code injection or something to that effect.
I just wanted to second chrisadam3997's observations. After using the newest attribute enabled DT, like was said, the fact everyone has some sort of attribute makes the display used much less useful. With chrisadam3997's color inclusions, it's about 25% more readable immediately.
I'd suggest using a larger color scale. It may end up looking like rainbow vomit, but it might be worth a try.
So hot = low, cool = high.
Red - Lowest
Yellow - Below Average
Green - Average
Blue - Above Average
Black - Exceptional
There might be some benefit in investigating a totally different view for attributes. Like, a histogram (http://en.wikipedia.org/wiki/File:Histogram_of_arrivals_per_minute.svg) would be freaking amazing. Better if we were to, say, double click on a dwarf entry and get a re-sizable window for them displaying a histogram of that dwarf's attributes. Actually, it would work smashingly for traits as well, especially if you could mouse over each entry in the histogram and get DF's text description of their trait value. While not necessary, it would preserve the flavor in the current trait view, where it gives you a number and a description.
I appreciate that's probably a fair amount of work for something as non-essential to DT as attributes and traits.
just for fun i did this by modifying the existing fill box to fill from the bottom instead, the results were as you described...
(http://farm8.staticflickr.com/7186/6955589843_8a81eb9c48.jpg)
raainnnnbooowwwwvommmiiittt bahahaha
You have my unmeasurable gratitude for a linux version. Some feedback:Yeah, DT is pretty picky about its path, kind of an annoyance. As far as writing profession names, you could try merging in Ag's patch that he mentions above and seeing if it works. I'll be doing the same at some point, and hopefully incorporating it back into the main release.(Therapist version is 0.6.12, build from source; Linux version is Kubuntu 11.10)
- For some reason, launching Therapist with cd /path/; sudo ./DwarfTherapist works, while sudo /path/DwarfTherapist doesn't
- Changing dwarf's professions from Therapist doesn't work. Change is completed without errors, but profession remains the same. Reading professions from DF works correctly.
But those are more an annoyance than real problem. Thanks again for a great program.
For some reason, launching Therapist with cd /path/; sudo ./DwarfTherapist works, while sudo /path/DwarfTherapist doesn't[/li][/list]
#!/bin/sh
DIR=`dirname $0`
cd "$DIR"
PWDP=`pwd -P`
cd "$PWDP"
sudo ./DwarfTherapist
put that in the DT executable folder and call that script instead and everything should be fine.
did you think for the averageness about that modded civs may have other averages?yes, but the problem is the mean values in the raw files don't create the same group ranges as the game does. at least as far as i can tell, i've really just started digging into this a few weeks ago so i don't know all the intricate workings yet. :)
@Splinterzyeah i think i buggered up the layout files.. i've uploaded it again give it another go
Should this version work with 34.05? Cause it doesnt seem to find my running df :(
Splinterz, does your version allow you to give nicknames to multiple dwarves at once? I'm using a slightly under-valued version now because someone patched it to allow multi-naming. When I get migrant waves of 30 I pretty much gotta have that.
I used splinterz's upload which worked up to my first migrant wave, now it's stuck on ''loading squads'' or something. Any solution? and what am i supposed to do with the post of dwarfengineer?great! i've been waiting for confirmation so i can sleep! ;D
edit. didnt see the fix, tried it and it seems to work now, thanks!
Is there a reason Splinterz and DwarfEngineer isn't working together atm? Seems silly to be running two different versions.
Is there a reason Splinterz and DwarfEngineer isn't working together atm? Seems silly to be running two different versions.
I was told there was a way to filter dwarves and vampires to spot them with therapist, other than the name thing?
Is this the case? Cuz it's be AWWESOME to be able to just spot the vamps without guesswork. Then they can become functional citizens of my fortress!
If you guys were here we'd all grab you in a group and throw you up and down in the air.It must be early... I read this as:
I was told there was a way to filter dwarves and vampires to spot them with therapist, other than the name thing?
Is this the case? Cuz it's be AWWESOME to be able to just spot the vamps without guesswork. Then they can become functional citizens of my fortress!
See splinterz post at the top of this page (88).
The next thing I want to do is create several more default grid views that individually only show a subset of the attributes important to a certain 'class' of jobs. For instance one for craftsdwarf related skills (creativity, kinesthetic sense, spacial sense, the relevant physical traits), with the idea being that it'd give a quick way to look over new immigrants for those well suited to train in a given skill.
I downloaded Splinterz´ version and it shows all my dwarves with the name "unknown" (34.04 fortress). That way it´s not really usable.
I downloaded Splinterz´ version and it shows all my dwarves with the name "unknown" (34.04 fortress). That way it´s not really usable.
hrmm sounds like i may have packaged the wrong ini files. you can patch the files yourself with the information in this thread, but i'll check it out and re-upload if necessary in a bit
I downloaded Splinterz´ version and it shows all my dwarves with the name "unknown" (34.04 fortress). That way it´s not really usable.
hrmm sounds like i may have packaged the wrong ini files. you can patch the files yourself with the information in this thread, but i'll check it out and re-upload if necessary in a bit
Don´t worry too much about that. I just wanted to take a fast look if any of my citizens is a vampire, since your version supports that. Turned out that none of them is, and I reverted to the "official" version since yours has this "unknown" thingy.
v0.34.05 Layouts Posted
Layouts are posted for all 3 operating systems and should download automatically.
There might be a slight issue with OSX however, so I may have to post a new beta version for that.
Direct Download Links:
- Windows (Graphics) v0.34.05 (http://www.dwarftherapist.com/memory_layouts/windows/v0.34.05_graphics.ini)
- Windows (Legacy) v0.34.05 (http://www.dwarftherapist.com/memory_layouts/windows/v0.34.05_legacy.ini)
- Linux v0.34.05 (http://www.dwarftherapist.com/memory_layouts/linux/v0.34.05.ini)
- Mac OSX v0.34.05 (http://www.dwarftherapist.com/memory_layouts/osx/v0.34.05.ini)
Nngg... can't... resist... urge.. to troll...Is there a reason Splinterz and DwarfEngineer isn't working together atm? Seems silly to be running two different versions.
Is there a reason people read the last page of an 88 page thread and assume they know everything about it?
AHH DAMNIT sorry couldn't help myself :P
But yeah, there's actually a few people helping out, each making slightly different changes in slightly different versions. At the end of the day, it is all progress towards one super-version, and we should be appreciative of everyone involved in the collaborative effort :)
Actually, I'm following the thread rather closely and have read it all, however I haven't seen the two agree about getting their stuff merged.
I just think it looks silly to have these two versions flying about when they should work together for a better piece of software all around.
I mean sure, I might sound totally unreasonable and crazy, knowing nothing about software development and coding, in which case feel free to ignore me, but don't make assumptions about what I've read or haven't when my question obviously isn't answered.
i've uploaded another patch with the following changes:
- modified the attributes as per chrisadams3997 observations (http://www.bay12forums.com/smf/index.php?topic=66525.msg3062116#msg3062116) and they should work with all drawing types. to summarize:
- values below average are red, and the farther below the larger they'll be (ie very good = black diamond, very bad = red diamond)
- average values are no longer drawn to keep things clean
- values range from -15 to 15, 0 being the average to keep the drawing consistent and obvious when using the numeric display
- i've noticed a lot of people don't appreciate hunting vampires so i've added an option to highlight them under the general options. this will also add a description of what exactly they're cursed with at the bottom of the tooltip. note this will work for all curses.
- hostile cursed dwarves on the map are excluded now (looking at you profane husks...)
- added the preliminary files for 34.05 (incomplete)
download (http://www.mediafire.com/?9f19bi0s11b4kx7)
source (http://code.google.com/r/splintermind-attributes/)
splinterz, your job is great and this vampire-hunter feature is awesome! But i have one question - why did you add in last version this "not flimsy but not tough" or "average endurance" descriptors to attributes in "dwarf detail"s screen? When average values had no comments, it was much easier to spot dwarfs weaknesses and strengths (The same reason why chrisadams3997 suggested to change the view of "attributes" panel).
And now this comments are long, bold and draw attention from what actually matters. Now i have to READ them all, instead of only the important ones =)
And the best solution, i think, would be to remove this comments from average attributes and display them just as a number (like it was in your 5 version), and give high and low attributes description in corresponding color (black or red, like diamonds).
This would make Therapist almost perfect.
But anyway, thank you for your work! =)
splinterz, your job is great and this vampire-hunter feature is awesome! But i have one question - why did you add in last version this "not flimsy but not tough" or "average endurance" descriptors to attributes in "dwarf detail"s screen? When average values had no comments, it was much easier to spot dwarfs weaknesses and strengths (The same reason why chrisadams3997 suggested to change the view of "attributes" panel).
And now this comments are long, bold and draw attention from what actually matters. Now i have to READ them all, instead of only the important ones =)
And the best solution, i think, would be to remove this comments from average attributes and display them just as a number (like it was in your 5 version), and give high and low attributes description in corresponding color (black or red, like diamonds).
This would make Therapist almost perfect.
But anyway, thank you for your work! =)
thanks and the descriptions on the average attributes will be removed in the next patch. i spent so much time crafting those beautiful descriptions i wanted to savor them a little while longer...or i may have forgotten to remove them.. ;) in the meantime, you can remove them yourself by editing the /etc/game_data.ini file and changing the offending descriptions to whatever you'd like.
anyone know why the post on page 89 with an update for 34.05 is showing up in my windows df as -1 and 9000+ for attributes?
Update:
I think the poster ron 89 doesn't support attributes
Could you provide more options in terms of how DT names custom professions? That is, ATM it simply gives everyone the profession name that you called your custom profession. I'd like to be able to not change any of their name stuff and merely change the labours, or change their nickname instead (I like using nicknames as it makes finding them easier), that sort of thing.
I am, indeed, unsuccessful w/ the osx version.
v0.34.05 Layouts Posted
Layouts are posted for all 3 operating systems and should download automatically.
There might be a slight issue with OSX however, so I may have to post a new beta version for that.
Direct Download Links:
- Windows (Graphics) v0.34.05 (http://www.dwarftherapist.com/memory_layouts/windows/v0.34.05_graphics.ini)
- Windows (Legacy) v0.34.05 (http://www.dwarftherapist.com/memory_layouts/windows/v0.34.05_legacy.ini)
- Linux v0.34.05 (http://www.dwarftherapist.com/memory_layouts/linux/v0.34.05.ini)
- Mac OSX v0.34.05 (http://www.dwarftherapist.com/memory_layouts/osx/v0.34.05.ini)
Using these layouts (dwarf engineer's)
-snip-
I have yet to get dwarf therapist to show attributes properly.
[Using these layouts (dwarf engineer's)
-snip-
I have yet to get dwarf therapist to show attributes properly.
^ There's your problem.
http://www.bay12forums.com/smf/index.php?topic=66525.msg3069186#msg3069186 (http://www.bay12forums.com/smf/index.php?topic=66525.msg3069186#msg3069186)
^ There's your solution.
Hope that helps.
-snip-
-snip-
Various members of the community, such as splinterz, have compiled their own "unofficial" versions of DT, seperate to the main release by Dwarf Engineer. I doubt layouts from one version are going to work with other versions. Bear in mind that any versions of DT that aren't released by Dwarf Engineer are potentially more likely to contain broken or incomplete features, and are not necessarily going to be supported or updated on any kind of regular basis. Personally i would suggest just waiting until the main version incorporates the changes of other versions, but if you're impatient then feel free to muck around with things, and i'm sure splinterz, and others, are open to feedback on their particular changes/versions.
so you'd like to have the option when applying custom professions to copy the custom name to the nickname, to the profession nickname, or not at all?Right. I like to use nicknames instead of profession names as it helps me sort through to find who I want easier. I guess since the nicknames are all lined up instead of appearing after an arbitrary length middle name..
i'm not sure how useful this would be since you can already accomplish it by setting the profession, and then changing the profession name / nickname, albeit it's a few more steps. maybe a few more people will chime in on whether this would be practical feature to add.Well changing the profession name is easy, but AFAIK there's no way to change the nickname part. I have to manually go thru every dwarf and remove his profession name (DT won't accept a custom profession with no name), then change his nickname to Hauler or whatever. Needless to say, painful.
What does it look like when it highlights a vamp? 'Cuz I have that enabled, and 126 dorfs, and noone's highlighted....
There's a problem with dwarf therapist from splinterz. When I go to grid views and try to create some custom views. I choose willpower for example, and it shows up as social awareness, it's workable, but a pain. There apparently mislabeled in grid views.
-snip-
Update
As a side note, it would be nice to be able to create our own custom columns. I was hoping to create a close combat grid view based on DGC, which I was able to do. I added recuperation as well as disease susceptibility. But what would be cool is if I could create my own variable that has the average of all those stats. The closest thing I can do is create a script, but I have to set a threshold. I can see what the averages are (not without DGC).
Update 2
Here's a weighted script I was working on
(((d.strength()*1.2)+(d.agility()*1.2)+(d.toughness()*1.3)+(d.willpower()*.7)+(d.spatial_sense()*1.1)+(d.kinesthetic_sense()*.9)+(d.recuperation()*.8)+(d.disease_resistance()*.8))/8)>1300
note: those smiley's are x.8
please put in main the ability to nickname more dwarves at once like in splinters' (i think it's his one that allows it)
There's a problem with dwarf therapist from splinterz. When I go to grid views and try to create some custom views. I choose willpower for example, and it shows up as social awareness, it's workable, but a pain. There apparently mislabeled in grid views.
-snip-
Update
As a side note, it would be nice to be able to create our own custom columns. I was hoping to create a close combat grid view based on DGC, which I was able to do. I added recuperation as well as disease susceptibility. But what would be cool is if I could create my own variable that has the average of all those stats. The closest thing I can do is create a script, but I have to set a threshold. I can see what the averages are (not without DGC).
Update 2
Here's a weighted script I was working on
(((d.strength()*1.2)+(d.agility()*1.2)+(d.toughness()*1.3)+(d.willpower()*.7)+(d.spatial_sense()*1.1)+(d.kinesthetic_sense()*.9)+(d.recuperation()*.8)+(d.disease_resistance()*.8))/8)>1300
note: those smiley's are x.8
the only way i was able to reproduce your attribute column issue was to use an old custom view, with the new build of my branched version. i just tried adding a new attribute view and it's working properly in 34.04 and 34.05. if you've just been copying over the layout files and not using the new executable you might have this issue as at one point between 34.01 and 34.05 the ordering of the mental attributes changed.
in regards to jobs i've been toying with a few ideas to rank dwarves by utilizing the script engine to evaluate user defined expressions similar to what you've shown above, so we'll see...
well i've got a working prototype with a method to use scripts to create a 'role' column. however thistleknot i've tried out your formula (what role is this exactly supposed to fill?) and i'm getting mostly negative numbers (4/113 dwarves have positive results).
the way i have it setup is you want a formula for the role to generate a rating/value for a dwarf. even better if it's a percentage between 0 and 100 and then i can ensure all the drawing types will also work.Spoiler: a simple (probably flawed) example (click to show/hide)
well i've got a working prototype with a method to use scripts to create a 'role' column. however thistleknot i've tried out your formula (what role is this exactly supposed to fill?) and i'm getting mostly negative numbers (4/113 dwarves have positive results).
the way i have it setup is you want a formula for the role to generate a rating/value for a dwarf. even better if it's a percentage between 0 and 100 and then i can ensure all the drawing types will also work.Spoiler: a simple (probably flawed) example (click to show/hide)
well i've got a working prototype with a method to use scripts to create a 'role' column. however thistleknot i've tried out your formula (what role is this exactly supposed to fill?) and i'm getting mostly negative numbers (4/113 dwarves have positive results).
the way i have it setup is you want a formula for the role to generate a rating/value for a dwarf. even better if it's a percentage between 0 and 100 and then i can ensure all the drawing types will also work.Spoiler: a simple (probably flawed) example (click to show/hide)
I fixed the formulaSpoiler (click to show/hide)
by the way, none of my dwarfs fit the bill, I had to filter it for over -135 lol! But I did verify all those stats are properly factored. So they are correctly measured away from the center value dwarves have for said attribute.
The problem was I divided the numbers in the wrong way. So I changed the positions, and everything works now.
I don't understand. -550? That's pretty low. I verified the values by individually comparing each stat block in my formula to >0 and <0, and verified that all dwarves either came up all black for that stat, or all red.
Example:
(((d.strength()*0.920491228)-1380.736842)*1.2)>0
then
(((d.strength()*0.920491228)-1380.736842)*1.2)<0
After I verified them all, I then did another check by seeing if anyone was above 0 for my comprehensive formula. Nobody was! Which tells me that the average is below 0 with all these values.
Not too big a deal. Either the center values reported in attributes for DF are incorrect, or for whatever reason they just average lower.
so I changed the value from >135 to >-67
Try that and tell me what you think.
Well I don't know how your going to get % when you comparing the value based off the middle.
I was curious as to how you were getting the results too (you were running Dwarf numbers through the formula, how were you doing that? By hand?). DT doesn't give the results for each dwarf, but now you should see that the formula should give you a below or above threshold.
How are you going to do %'s if 0 is the middle? 0 = 50%? That might work. I'm not a percent guy myself, I saw the histogram thing in the thread, but I like the way it is right now, big squares. Mainly because % might be confusing. % for racial max? Or game max? A dwarf prolly can never hit 5000 Strength, prolly reserved for golem's. But what if someone runesmith's it? Then display 100%+?
Here's the corrected formula, I just verified it works properly (thank god I'm home).Spoiler (click to show/hide)
One last note. This formula works for above or below average, but...
it doesn't account for the scale that is above average.
For example, a dwarf may have a higher ceiling range (higher upper limit, say average is 1000, max is 3000, but minimum is 0). The only way to account for this, is to factor the value when it's above 0, in the prior example, prolly a factor of x2 when the value is above 0. Confusing, but for the basics, it works. However, I do not know dwarf max's.
If dwarf max's were known, then %'s could be done.
all i'm trying to do is determine if we can get the role formulas to fit into a standard so they can be easily displayed. so to take your formula again, i've got a range between -550 and -5. so how do we draw that? is -550 awfully bad, or is it still decent? what's the absolute awesome level that we'd want to draw the black diamond at?
all i'm trying to do is determine if we can get the role formulas to fit into a standard so they can be easily displayed. so to take your formula again, i've got a range between -550 and -5. so how do we draw that? is -550 awfully bad, or is it still decent? what's the absolute awesome level that we'd want to draw the black diamond at?
I now understand what your asking, and I had to do some quick spreadsheet stuff.
if using my most recent formula in http://www.bay12forums.com/smf/index.php?topic=66525.msg3078785#msg3078785
I took the max value possible with my formula for every stat, and then averaged it. So if someone runesmith'd there character to 5000 in everything, then the max value with my formula (with the weights I have) is 3847.614.
Lowest value is -1108.12
0 = middle.
Without weights (i.e. if your removed the *1.2 and *.8 you see in my formula's at the end of each attribute line).
Then the scale would be
-1130.7368421053 for the lowest possible value
0 = middle
3962.174 for the highest possible value
Does that help?
Update:
I might want to change the formula to not factor anything. But to simply subtract the middle value from each attribute, and average that. Seems easier, would probably yield similar results, but for now, what I've displayed should work.
Well the formula I gave you was what I had to work with in dwarf therapist. I can give you a c++ formula that would normalize the distributions (that's if your actually implementing this into the source code). It would give better results. The problem w my formula is it normalizes the means but it changes the mins and maxs (especially when I use weights). I could try a few things and do category blocks like those on the wiki, or I can force them all to a value between 1 and 100, 50 being the average. Either way, the results aren't optimized nor correct for really high values (example highest willpower and focus w my formula is around 2900, str is like 4500). So u can see their is a bias, and I don't think it should go into the source
-snip-
If dt supports if/then statements, then I can fix it with just dt
I am, indeed, unsuccessful w/ the osx version.
Here's a new OSX beta version. Should fix the double icon issue, and the automatic download issue.
Dwarf Therapist OSX Beta (64-bit) v0.6.12b04 (http://dwarftherapist.googlecode.com/files/DwarfTherapist-0.6.12b04.dmg)
0[/code][/spoiler]Spoiler (click to show/hide)
Dwarves have higher than center musicality and memory
They have a few stat's that are higher than the center's reported on attributes wiki. I marked them after their name with either a < or a >. Agility was pretty much right on.
could we have traits added into dwarf therapist rather than having to apply filters?
could we have traits added into dwarf therapist rather than having to apply filters?
i'm pretty sure you can add trait columns in a custom view if you want, however the drawing methods are missing (i think).
in regards to the roles i've been working on and after giving it more thought, i'm strongly leaning towards just implementing something similar to what dgc did in terms of allowing users to specify a role simply by adding lists of traits, attributes and skills. the advantage would be that it's much more user friendly to define a custom role. the disadvantage is it won't be as flexible as building some crazy weighted script.
the only question then is how to also factor in the levels of traits and skills? should they be weighted equally important as attributes, or something else? anyone have any thoughts on this?
the only question then is how to also factor in the levels of traits and skills? should they be weighted equally important as attributes, or something else? anyone have any thoughts on this?
You guys are nuts. I was following this entire thread to the letter and then suddenly thistleknot shows up and starts talking rocket science!the only question then is how to also factor in the levels of traits and skills? should they be weighted equally important as attributes, or something else? anyone have any thoughts on this?
Anyway, i think i can help you with that at least - the obvious answer is they should be weighted based on how fast they are to level up. Many skills take years or even decades to go from 0 to legendary, while going from 'weak' to 'superdwarvenly tough' might only take a few seasons of constant sparring. I rarely, if ever, take attributes into consideration when picking military dwarves, for example. I'm more likely to pick an active, easily angered dwarf with high willpower who's weak as a stick than a friendly superdwarf, since traits, on the other hand, can't level up at all. So i suppose traits should be given the relevant merit, although it's not entirely clear how much more an angry dwarf will enter rage, let alone how much it effects combat.
TLDR: skills > traits > attributes, imo
Of course, if you're picking out soldiers to turn into vampires, it's a whole different story (since their attributes become locked permanently upon vampyrism).
var xpct;
if (x <= 949) {
xpct = ((0.0333988 * x) - 15.0295)
} else if (x >= 950 && x <= 1149) {
xpct = ((0.0837487 * x) - 62.8943)
} else if (x >= 1150 && x <= 1249) {
xpct = ((0.168333 * x) - 160.249)
} else if (x >= 1250 && x <= 1349) {
xpct = ((0.168343 * x) - 160.429)
} else if (x >= 1350 && x <= 1549) {
xpct = ((0.0837538 * x) - 46.4006)
} else if (x >= 1550) {
xpct = ((0.0238412 * x) + 46.3801)
};
return xpct;
var xpct;
if (x <= 949) {
xpct = ((0.0333988 * x) - 15.0295)
} else if (x >= 950 && x <= 1149) {
xpct = ((0.0837487 * x) - 62.8943)
} else if (x >= 1150 && x <= 1249) {
xpct = ((0.168333 * x) - 160.249)
} else if (x >= 1250 && x <= 1349) {
xpct = ((0.168343 * x) - 160.429)
} else if (x >= 1350 && x <= 1549) {
xpct = ((0.0837538 * x) - 46.4006)
} else if (x >= 1550) {
xpct = ((0.0238412 * x) + 46.3801)
};
return xpct;
BTW, traits and attributes are without any effect on quality of items produced by legendary dwarves.
What is this? I see category's and percents, but what do the percent's represent? A distribution curve?Code: (dgc strength function. x = strength) [Select]var xpct;
if (x <= 949) {
xpct = ((0.0333988 * x) - 15.0295)
} else if (x >= 950 && x <= 1149) {
xpct = ((0.0837487 * x) - 62.8943)
} else if (x >= 1150 && x <= 1249) {
xpct = ((0.168333 * x) - 160.249)
} else if (x >= 1250 && x <= 1349) {
xpct = ((0.168343 * x) - 160.429)
} else if (x >= 1350 && x <= 1549) {
xpct = ((0.0837538 * x) - 46.4006)
} else if (x >= 1550) {
xpct = ((0.0238412 * x) + 46.3801)
};
return xpct;
I weight all attributes attached to a skill equally, and assume that a high percentile in one cancels out an equally low percentile in another. I scale attributes to percentiles in the six default ranges, and let the lines of the first and last ranges run off infinitely, meaning very high and very low attrs slowly stop making sense. For instance you get default strength of 100% at 2250, but a strength of 5000 will only report 166%.
I feel I should step into the discussion to say some things.
First of all, splinterz's above quote is correct. I've not changed the README however my current version of DGC still uses the old formula. (though refactored!)
This formula assumes that information in the wiki is correct, and without seeing more well documented tests with evidence I think they are correct. Attributes get raised by using skills and I believe thistleknot used dwarves from two large fortresses which would have seen attribute growth.
The DGC formula takes an attribute that falls within the generated range and maps it from 0-100. This roughly is how much of the population this is better than. If it's 80% it means that given 100 generated dwarves this will be above ~80 of them.
This is a very good formula to use when embarking! However it suffers huge problems as soon as you get immigrants, babies or any of your dwarves do anything since attributes will deviate from the generated averages.
If you have a very large fort you don't want to know how good your dwarves are above the generated average, you want to know how good they are in relation to all your other dwarves. Hence, two formula are needed, one for embark and one afterwards.
A third formula may be useful and can also be used on any other creatures. This is to say that attributes are between 0-5000 so weight all attributes by dividing by 500. 100 will be the maximum value possible and 0 the minimum.
So yeah, I'm planning on having all three formula in the next release of DGC. Hopes this info helps people! :)
Are there plans to allow for assigning to squads directly in DT?
More generally speaking, does any plan exist to further improve DF?
Current plan is:Of course, I'll continue to try to provide layouts ASAP for new releases.
- Slight hiatus
- Bugfix release
- Feature releases
I have a lingering question, about a minor DF lack that is quite annoying (obviously for me, but I dare believe it annoys others too?).
Why the (no job) and the (on break) icons in DF are the same, the small red/orange dot? Quite often I have to check if they are really idle, or just taking a well deserved rest... :D
More generally speaking, does any plan exist to further improve DF? Like for example a filter on idle dwarves (only showing them?)
i'd like to add a set of packaged roles as well, so if anyone wants to take the initiative and use the template provided (skill and trait id numbers are in the game_data.ini) i'm also still not sure on what the best weights would be. someone previously mentioned that skills > traits > attributes (i think?) would be the way to go. any other opinions or is this sound advice?
your input is greatly appreciated!
Any clues?
Of course, my pie-in-the-sky +1 wish would be... would it be possible for this/some other utility to scan your initial 7 pre-embark too? You know, so you know who to assign the medical skills to, who to give the brokerage to, who to make the leaders, who to give the weapon & armor skills, etc.?
I had to copy the DwarfTherapist executable from <DT>/bin/release to <DT>/ and then run it from in the directory.
Are there two places where nicknames are stored now? I keep on seeing old nicknames in my announcements, as if when I delete nicknames through Dwarf Therapist, they are stored somewhere.
Old nicknames also appear in dwarf descriptions and relations, but do not appear on the unit list. Changing the nicknames through the game itself seems to not have this problem.
This is amazing, thank you all for your hard work! Can't wait for the next release!Of course, my pie-in-the-sky +1 wish would be... would it be possible for this/some other utility to scan your initial 7 pre-embark too? You know, so you know who to assign the medical skills to, who to give the brokerage to, who to make the leaders, who to give the weapon & armor skills, etc.?
I agree, would be an awesome feature.
alright i think i've got everything finalized for anyone who would like to play with roles and some other changes. big thanks to thistle for some massive data collections and beta testing.
updates:
- castes are working and additionally they're read from the [CASTE_NAME] raw tag so modders can utilize the feature (thanks meph!)
- fixed merchants' guards showing up in dt (reported by alagon)
- 'on break' now works properly and is identified with a blue dot, as opposed to the 'idle' red dot, and groups properly
- the edit script window now works
- slightly darkened some text for readability
- removed the average attribute descriptions
- added skill and attribute reference tables, and sorted traits in the filter scripts window
- added standard deviation and mean script functions for attributes
- added skill rating function for scripts
- added 36 default role columns, with default weights of 1.25 for traits, 0.75 for skills, and 0.25 for attributes (edit/add new ones in the game_data.ini)
- added a roles view in the default views which includes all built-in roles
download (http://www.mediafire.com/?uz9n025m9jcx373)
you can read more details on the formatting and few examples on the source page below as well if you're interested in creating your own roles
source (http://code.google.com/r/splintermind-attributes/)
as always, any feedback, opinions or other ideas regarding features are always welcome.
Note: this is not the official dwarf therapist, this is a branch! (nothing should explode though...probably)
alright i think i've got everything finalized for anyone who would like to play with roles and some other changes. big thanks to thistle for some massive data collections and beta testing.
updates:
- castes are working and additionally they're read from the [CASTE_NAME] raw tag so modders can utilize the feature (thanks meph!)
- fixed merchants' guards showing up in dt (reported by alagon)
- 'on break' now works properly and is identified with a blue dot, as opposed to the 'idle' red dot, and groups properly
- the edit script window now works
- slightly darkened some text for readability
- removed the average attribute descriptions
- added skill and attribute reference tables, and sorted traits in the filter scripts window
- added standard deviation and mean script functions for attributes
- added skill rating function for scripts
- added 36 default role columns, with default weights of 1.25 for traits, 0.75 for skills, and 0.25 for attributes (edit/add new ones in the game_data.ini)
- added a roles view in the default views which includes all built-in roles
download (http://www.mediafire.com/?uz9n025m9jcx373)
you can read more details on the formatting and few examples on the source page below as well if you're interested in creating your own roles
source (http://code.google.com/r/splintermind-attributes/)
as always, any feedback, opinions or other ideas regarding features are always welcome.
Note: this is not the official dwarf therapist, this is a branch! (nothing should explode though...probably)
I just loaded this with my 31.25 world. A lot of the attributes on my dwarves except for strength were reading as zero. Looking at the stats in runesmith proves this to not be true. Also, the roles view isn't working at all except for socializer.
sorry, it's designed for df2012, i haven't had the time to go back to 31.25 and look for all the offsets.
Makes sense. I just did a direct download and didn't see the site. Very nice work!
--SNIP--
sorry, it's designed for df2012, i haven't had the time to go back to 31.25 and look for all the offsets.
This is amazing, thank you all for your hard work! Can't wait for the next release!Of course, my pie-in-the-sky +1 wish would be... would it be possible for this/some other utility to scan your initial 7 pre-embark too? You know, so you know who to assign the medical skills to, who to give the brokerage to, who to make the leaders, who to give the weapon & armor skills, etc.?
I agree, would be an awesome feature.
i'm pretty sure you can already do this... i'm sitting at the embark screen right now and i can view attributes and roles just fine in therapist. am i missing something?
alright i think i've got everything finalized for anyone who would like to play with roles and some other changes. big thanks to thistle for some massive data collections and beta testing.
updates:
- castes are working and additionally they're read from the [CASTE_NAME] raw tag so modders can utilize the feature (thanks meph!)
- fixed merchants' guards showing up in dt (reported by alagon)
- 'on break' now works properly and is identified with a blue dot, as opposed to the 'idle' red dot, and groups properly
- the edit script window now works
- slightly darkened some text for readability
- removed the average attribute descriptions
- added skill and attribute reference tables, and sorted traits in the filter scripts window
- added standard deviation and mean script functions for attributes
- added skill rating function for scripts
- added 36 default role columns, with default weights of 1.25 for traits, 0.75 for skills, and 0.25 for attributes (edit/add new ones in the game_data.ini)
- added a roles view in the default views which includes all built-in roles
download (http://www.mediafire.com/?uz9n025m9jcx373)
you can read more details on the formatting and few examples on the source page below as well if you're interested in creating your own roles
source (http://code.google.com/r/splintermind-attributes/)
as always, any feedback, opinions or other ideas regarding features are always welcome.
Note: this is not the official dwarf therapist, this is a branch! (nothing should explode though...probably)
This is amazing, thank you all for your hard work! Can't wait for the next release!Of course, my pie-in-the-sky +1 wish would be... would it be possible for this/some other utility to scan your initial 7 pre-embark too? You know, so you know who to assign the medical skills to, who to give the brokerage to, who to make the leaders, who to give the weapon & armor skills, etc.?
I agree, would be an awesome feature.
i'm pretty sure you can already do this... i'm sitting at the embark screen right now and i can view attributes and roles just fine in therapist. am i missing something?
really? I've tried this on 2 platforms (osx and windows) and have never been able to load up the 7 initial dwarves while I'm still planning their skills (not even their names come up). Anyone else have this work for them?
Is 0.6.12 supposed to be 0.31.25 compatible? I've got a bunch of old 0.31.25 fortresses, and in all of them the professions are showing up really weird in 0.6.12. Some hammerdwarves show up as speardwarves, some adult dwarves as children. It's quite random, except children seem to always show up as master lashers and babies as recruits. Therapist also lists children and babies with bold text, like they were drafted into militia and in active duty. Also some dwarves are missing completely. Everything seems correct in 0.6.11. I've tried this in 32 bit Linux and in 64 bit Win 7, both have the same problem.
the 7.0 update looks nice, though for modders there is still one oddity:
my drow use different stat weighting, so my very strong, very agile and virtually never sick drow shows in dftherapist as strong without marker, but extremly agile and flimsy (though virtually never sick with 4900 is awesome either way oO)
now is the question if there is some way to read those values, or a simple tool so i can adjust and save the properties.
edit: also i noticed that spatial sense is not in, this is also a very important military attribute, because it affects block and even more so dodging a lot (someone with amazing spatial sense and average dodgeing is insanely hard to hit compared to an agile one
...
...
Weightings on skills(traits too prolly) seem far far too high. Even if someone just has skill lvl1 and average-ish relavent attribs for Observer for example, it show him as being miles better than someone with better attribs but no skill. Is it possible for an option to disable taking skill into account so we can see a dorfs potential instead of being heavily skewed by a nearly useless skill level?
Apart from that it's looking great with the new additions, although it still gets Current Job wrong a lot :)
Weightings on skills(maybe traits too?) seem far far too high. Even if someone just has skill lvl1 and average-ish relavent attribs for Observer for example, it show him as being miles better than someone with better attribs but no skill.
As to what weights are best i'm not a maths guy so not sure, the only reason i brought it up was because it was only on my last 31.25 fort that i tried DGC and tested it on assigning an additional new crafts dwarf of some kind. The dorf i chose using DGC; his skill level blitzed past my existing dorf who was already around level 4 but rated about 30% less.
If you wanted to keep skill as a weight, then maybe swap the weights, ie .25 for skills and .75 for attribs as they seem a greater factor from my limited experience.
Love your work, splinterz.Weightings on skills(maybe traits too?) seem far far too high. Even if someone just has skill lvl1 and average-ish relavent attribs for Observer for example, it show him as being miles better than someone with better attribs but no skill.
In terms of long-term military dwarf potential, i would probably argue that this is true. Military attributes barely take a year to get to a good place, while certain skills, like Observer for example, might take alot longer, so in the long run the dwarf with the level 1 observer skill is a better choice.
That's the tricky part though. The weightings depend on the context. The more long-term you're looking at, the less important current ability levels are and the more important potential ability levels are. While i'm sure it would be possible to split every single custom role into long or short term consideration, or even further divisions, it's probably outside the scope of the project (i honestly think splinterz has already gone overboard but i'm not complaining :P)
From what AnnanFay said for DGC they just pulled the data off the wiki and from various !!SCIENCE!! projects. As to what weights are best i'm not a maths guy so not sure, the only reason i brought it up was because it was only on my last 31.25 fort that i tried DGC and tested it on assigning an additional new crafts dwarf of some kind. The dorf i chose using DGC; his skill level blitzed past my existing dorf who was already around level 4 but rated about 30% less.yeah i like having the traits weighed the most, as they can't change and there's only a few roles that it's important to factor them in. using the same logic then the next in line would be the slowest level time between skills and attributes, assuming more time to level = more valuable. or is it better to look at it from the effect on the role? for example is it better to have a dwarf with strong attributes, and weak skills, or the opposite as a fighter?
If you wanted to keep skill as a weight, then maybe swap the weights, ie .25 for skills and .75 for attribs as they seem a greater factor from my limited experience.
One additional note, i wish it'd remember the sort order of the dorfs as i move between tabs :)
Yes for things like military teacher/student etc can have a pretty large impact, and by right environment do you mean danger rooms and 2 man squads? ;p i'm not sure those should really count as they are exploiting a weakness in the system. And yes context would certainly be a factor but in my mind tools like this in DT/DGC should be there to show potential, and then leave the user to workout how best they want to use the dorf if they have or don't have certain skills. Ie for a military guy i wouldn't want all my teachers in 1 squad, i'd want to spread them around.
As it stands if someone has say 1 in swords, with the current weights it's like saying, this guy swung a sword once so he must be the greatest. And traits, 1.25 for them, and .25 for attribs, wow. Maybe traits could be set as a very low weight, just so someone can see when they hover over a dorf that is has a relevant trait for that profession, the same with skills even.
I tried adjusting some weights and it gave the desired effect. Maybe it could be a menu option even, to say apply a weight to each catagory.
PS: [dwarf_jobs] i guess we are waiting for several builds before updating this? or should people submit updates right now?
Yes for things like military teacher/student etc can have a pretty large impact, and by right environment do you mean danger rooms and 2 man squads? ;p i'm not sure those should really count as they are exploiting a weakness in the system. And yes context would certainly be a factor but in my mind tools like this in DT/DGC should be there to show potential, and then leave the user to workout how best they want to use the dorf if they have or don't have certain skills. Ie for a military guy i wouldn't want all my teachers in 1 squad, i'd want to spread them around.
As it stands if someone has say 1 in swords, with the current weights it's like saying, this guy swung a sword once so he must be the greatest. And traits, 1.25 for them, and .25 for attribs, wow. Maybe traits could be set as a very low weight, just so someone can see when they hover over a dorf that is has a relevant trait for that profession, the same with skills even.
I tried adjusting some weights and it gave the desired effect. Maybe it could be a menu option even, to say apply a weight to each catagory.
PS: [dwarf_jobs] i guess we are waiting for several builds before updating this? or should people submit updates right now?
haha i think you're exaggerating your claims a bit, but that's fine. i do think that traits are weighted too heavily at the moment, because if a role has a trait, those dwarves will be at the top, guaranteed, and it's difficult to overcome them with the other aspects. as per my other post, i'll be setting up a way to specify global weights (may just be in the ini though, no GUI)
sorry, i'm not following what you're talking about with submitting dwarf jobs?
...
Weightings on skills(maybe traits too?) seem far far too high. Even if someone just has skill lvl1 and average-ish relavent attribs for Observer for example, it show him as being miles better than someone with better attribs but no skill. Is it possible for an option to disable taking skill into account so we can see a dorfs potential instead of being heavily skewed by a nearly useless skill level?
Apart from that it's looking great with the new additions, although it still gets Current Job wrong a lot :)
It would be nice if there was a way to give a higher weight to: how far an attribute is from the average. I was trying to do this before with my convoluted formula of attribute()-mean = distance from center, but I was having a hard way of standardizing it. After a lot of talk with Splinterz, I caved in to the weight system because I couldn't articulate how to implement what I'm thinking. To be honest, I don't even know if what I'm thinking is possible or would pan out like I'd hope it would. I'm guessing it would take the averaging of stdev's and means, and what-not.
My old post is at http://www.bay12forums.com/smf/index.php?topic=66525.msg3083599#msg3083599
There's a few things I think I had off.
I don't think I would want to multiply mean * weight, but rather stdev * weight, and average those.
Yes for things like military teacher/student etc can have a pretty large impact, and by right environment do you mean danger rooms and 2 man squads? ;p i'm not sure those should really count as they are exploiting a weakness in the system.
And yes context would certainly be a factor but in my mind tools like this in DT/DGC should be there to show potential, and then leave the user to workout how best they want to use the dorf if they have or don't have certain skills. Ie for a military guy i wouldn't want all my teachers in 1 squad, i'd want to spread them around.
Is this what DGC does? i notice at the top is this list:Spoiler (click to show/hide)
Which i think it uses as a baseline.
I notice currently some entries like this:
35/name="Craftsdwarf"
35/attributes="0.25::agility:0.25,endurance:0.25,creativity:1.0,spatial sense:0.5,kinesthetic sense:0.5"
How were those splits determined as i see nothing on the wiki about them?
Yeah creativity is interesting, i would imagine for someone churning out rock crafts maybe it'd make more figurines, or maybe just when they do make a figurine it'd have a more lavish description, the same with engraving. The splits just got me thinking when i was about to add in Gem Cutter/Setter. For Gem Setting to get those really funky long descriptions maybe a lot more agility is needed and not just creativity, it's pretty fiddly work. I do wonder if there are more emphasis given to certain attribs in the game but i guess we'll never know unless someone can be bothered to stick DF through a disassembler :)
Yeah sounds like a plan batman.
And i noticed one thing when trying to add Gem Cutter.
It seems that regardless of what you set "size=" to in [dwarf_roles] it won't display extra roles.
ie i added:
37/name="Gem Cutter"
37/attributes="0.90::agility, analytical ability, spatial sense, kinesthetic sense"
37/traits=""
37/skills="0.10::30"
I even tried deleting the Dwarf Therapist.ini but no joy, it still seemed fixed at 36 columns?
Plus i swapped 36 and 37 over (ie 36 now was Gem Cutter and 37 was Lawdwarf) and it didn't change the roles tab either, so i guess that is also hard coded?
I can add it in a custom grid view though fine. /shrug
37/name="Gem Cutter"
# AAaSsKs
37/attributes="0.90::agility, analytical ability, spatial sense, kinesthetic sense"
37/traits=""
37/skills="0.10::30"
38/name="Gem Setter"
# ACSsKs
38/attributes="0.90::agility, creativity, spatial sense, kinesthetic sense"
38/traits=""
38/skills="0.10::31"
39/name="Fisherdwarf"
# SAFPKs
39/attributes="0.90::strength, agility, focus, patience, kinesthetic sense"
39/traits=""
39/skills="0.10::24"
40/name="Wood cutter"
40/attributes="0.90::strength, agility, endurance, willpower, spatial sense, kinesthetic sense"
40/traits=""
40/skills="0.10::1"
211/name = "Tan a Hide"
#211/name = "Bring Crutch"
#211/type = MEDICAL
can you add a woodcutter as well Splinterz?
40/name="Wood cutter"
40/attributes="0.90::strength, agility, endurance, willpower, spatial sense, kinesthetic sense"
40/traits=""
40/skills="0.10::1"
In file included from src/gridviewdialog.cpp:38:0:
inc/grid_view/rolecolumn.h:44:10: error: extra qualification ‘RoleColumn::’ on member ‘write_to_ini’ [-fpermissive]
Edit <codebase>/inc/grid_view/rolecolumn.h to change RoleColumn::write_to_ini
to just write_to_ini
and compile from there.
physical_attrs=0x328
[soul_details]
mental_attrs=0x0068
218/name = "Make rock Pot"
#218/name = "Pen/Pasture Large Animal"
#218/type = ANIMAL
Some of these attribs associated with skills are bonkers, Analytical Ability for cooking? O.o
I only noticed as i have someone who is apparently a potentially useless cook and yet is skill 9 after doing maybe 30-40(maybe more but no more than 50, fortress is less than a year old) easy meals, it makes no sense. His attribs are very average to awful, 383 for Kinesthetic Sense for example.
Another [dwarf_jobs]Code: [Select]218/name = "Make rock Pot"
#218/name = "Pen/Pasture Large Animal"
#218/type = ANIMAL
Has anyone gotten a script to show up in a role? Splinterz coded it in, but when I add the role I get nan% when I hover my mouse over the column
Memory hacking question: Looking for the skills manually, I start by searching the creature_vector and find the dwarf I want (in this case, 0xeded6810 shows his first name). Then I add the soul offset and skills offset (now at 0xeded6fcc), and from here, looking at dwarf.cpp, there should be a vector to vectors with the type, rating, etc. But when telling DT to print that vector (the printing uses the same enumerate_vector() function), it says there are zero entries. Did I miss something, or do I need to use gdb to handle this?
make sure your script results in a value, and isn't a > or something like the filter scripts.
findAlternative(avgMDeviation, avgDev)*100;
depending on what offsets you're using to get to that point you may or may not be at the right place. the vector may be above/below and you'll have to poke around. i'd highly recommend looking at dfhack's df-structures for the linux offsets (i'm assuming you're trying to find the linux offsets yes?)I've actually already found the linux offsets (see top of this page), and DT automatically reads them all correctly, but I'm working on using gdb to manually change values (for, say, making an instantly legendary weaponsmith). Unethical, but educational :) In any case, both DT and dfhack treat the skills offset as pointing at a vector, DT's brute force vector printing just says there's nothing there.
depending on what offsets you're using to get to that point you may or may not be at the right place. the vector may be above/below and you'll have to poke around. i'd highly recommend looking at dfhack's df-structures for the linux offsets (i'm assuming you're trying to find the linux offsets yes?)I've actually already found the linux offsets (see top of this page), and DT automatically reads them all correctly, but I'm working on using gdb to manually change values (for, say, making an instantly legendary weaponsmith). Unethical, but educational :) In any case, both DT and dfhack treat the skills offset as pointing at a vector, DT's brute force vector printing just says there's nothing there.
So plugging in the creature_vector (0x095921ac), finding a dwarf (0xeb7398d0), adding the souls offset (0x05e8), then the skills offset (0x01d4), I should be at a vector containing a vector for each skill, right?
the soul offset should point to a vector, and you want the first soul in the vector. then you add the skills offset, and you should have a vector of structs which represent the skills.
the soul offset should point to a vector, and you want the first soul in the vector. then you add the skills offset, and you should have a vector of structs which represent the skills.
That did it :) For some reason I just assumed the m_first_soul was just the soul offset, not an element in a vector there. Does this mean dwarves can have multiple souls? Thanks for the help
37/name="Wood cutter"
37/attributes="1::strength:1.1,agility:1.1,endurance:1.1,willpower:0.9,spatial sense:1.2, kinesthetic sense:0.9"
37/traits=""
38/name="Trapper"
38/attributes="1::agility:1,analytical ability:1,creativity:1,spatial sense:1.1"
38/traits=""
38/skills=""
39/name="Trapper, Alt"
39/script="
function findZ(x, mean, stdev){ var result = ((x-mean)/stdev); return result}
function normalcdf(X){ var T=1/(1+.2316419*Math.abs(X)); var D=.3989423*Math.exp(-X*X/2); var Prob=D*T*(.3193815+T*(-.3565638+T*(1.781478+T*(-1.821256+T*1.330274)))); if (X>0) { Prob=1-Prob } return Prob }
function strDev() {return d.attribute_stdev(0)}
function agiDev() {return d.attribute_stdev(1)}
function tuffDev() {return d.attribute_stdev(2)}
function endDev() {return d.attribute_stdev(3)}
function recDev() {return d.attribute_stdev(4)}
function disRDev() {return d.attribute_stdev(5)}
function anaADev() {return d.attribute_stdev(6)}
function focDev() {return d.attribute_stdev(7)}
function willDev() {return d.attribute_stdev(8)}
function creDev() {return d.attribute_stdev(9)}
function intuDev() {return d.attribute_stdev(10)}
function patDev() {return d.attribute_stdev(11)}
function memDev() {return d.attribute_stdev(12)}
function linADev() {return d.attribute_stdev(13)}
function spaSDev() {return d.attribute_stdev(14)}
function musDev() {return d.attribute_stdev(15)}
function kinSDev() {return d.attribute_stdev(16)}
function empDev() {return d.attribute_stdev(17)}
function socADev(){return d.attribute_stdev(18)}
function str() {return normalcdf(findZ(d.strength(), d.attribute_mean(0), d.attribute_stdev(0)))}
function agi() {return normalcdf(findZ(d.agility(), d.attribute_mean(1), d.attribute_stdev(1)))}
function tuff() {return normalcdf(findZ(d.toughness(), d.attribute_mean(2), d.attribute_stdev(2)))}
function end() {return normalcdf(findZ(d.endurance(), d.attribute_mean(3), d.attribute_stdev(3)))}
function rec() {return normalcdf(findZ(d.recuperation(), d.attribute_mean(4), d.attribute_stdev(4)))}
function disR() {return normalcdf(findZ(d.disease_resistance(), d.attribute_mean(5), d.attribute_stdev(5)))}
function anaA() {return normalcdf(findZ(d.analytical_ability(), d.attribute_mean(6), d.attribute_stdev(6)))}
function foc() {return normalcdf(findZ(d.focus(), d.attribute_mean(7), d.attribute_stdev(7)))}
function will() {return normalcdf(findZ(d.willpower(), d.attribute_mean(8), d.attribute_stdev(8)))}
function cre() {return normalcdf(findZ(d.creativity(), d.attribute_mean(9), d.attribute_stdev(9)))}
function intu() {return normalcdf(findZ(d.intuition(), d.attribute_mean(10), d.attribute_stdev(10)))}
function pat() {return normalcdf(findZ(d.patience(), d.attribute_mean(11), d.attribute_stdev(11)))}
function mem() {return normalcdf(findZ(d.memory(), d.attribute_mean(12), d.attribute_stdev(12)))}
function linA() {return normalcdf(findZ(d.linguistic_ability(), d.attribute_mean(13), d.attribute_stdev(13)))}
function spaS() {return normalcdf(findZ(d.spatial_sense(), d.attribute_mean(14), d.attribute_stdev(14)))}
function mus() {return normalcdf(findZ(d.musicality(), d.attribute_mean(15), d.attribute_stdev(15)))}
function kinS() {return normalcdf(findZ(d.kinesthetic_sense(), d.attribute_mean(16), d.attribute_stdev(16)))}
function emp() {return normalcdf(findZ(d.empathy(), d.attribute_mean(17), d.attribute_stdev(17)))}
function socA() {return normalcdf(findZ(d.social_awareness(), d.attribute_mean(18), d.attribute_stdev(18)))}
function d_str() {return d.strength()-d.attribute_mean(0)}
function d_agi() {return d.agility()-d.attribute_mean(1)}
function d_tuff() {return d.toughness()-d.attribute_mean(2)}
function d_end() {return d.endurance()-d.attribute_mean(3)}
function d_rec() {return d.recuperation()-d.attribute_mean(4)}
function d_disR() {return d.disease_resistance()-d.attribute_mean(5)}
function d_anaA() {return d.analytical_ability()-d.attribute_mean(6)}
function d_foc() {return d.focus()-d.attribute_mean(7)}
function d_will() {return d.willpower()-d.attribute_mean(8)}
function d_cre() {return d.creativity()-d.attribute_mean(9)}
function d_intu() {return d.intuition()-d.attribute_mean(10)}
function d_pat() {return d.patience()-d.attribute_mean(11)}
function d_mem() {return d.memory()-d.attribute_mean(12)}
function d_linA() {return d.linguistic_ability()-d.attribute_mean(13)}
function d_spaS() {return d.spatial_sense()-d.attribute_mean(14)}
function d_mus() {return d.musicality()-d.attribute_mean(15)}
function d_kinS() {return d.kinesthetic_sense()-d.attribute_mean(16)}
function d_emp() {return d.empathy()-d.attribute_mean(17)}
function d_socA() {return d.social_awareness()-d.attribute_mean(18)}
function findAlternative(x, y){return normalcdf(findZ(x, 0, y))}
totalAttributes=4;
avgMDeviation=
(
(d_agi()*1)+
(d_anaA()*1)+
(d_cre()*1)+
(d_spaS()*1.1)
)/totalAttributes;
avgDev=
(
(
(agiDev()*1)+
(anaADev()*1)+
(creDev()*1)+
(spaSDev()*1.1)
)/totalAttributes
);
findAlternative(avgMDeviation, avgDev)*100;
"
40/name="Close Combat"
40/attributes="1::strength:1.2,agility:1,toughness:1.3,endurance:1,recuperation:0.8,disease resistance:0.8,willpower:0.7,spatial sense:1.1,kinesthetic sense:0.9,focus:0.8"
40/traits=""
40/skills=""
41/name="Close Combat, alt"
41/script="
function findZ(x, mean, stdev){ var result = ((x-mean)/stdev); return result}
function normalcdf(X){ var T=1/(1+.2316419*Math.abs(X)); var D=.3989423*Math.exp(-X*X/2); var Prob=D*T*(.3193815+T*(-.3565638+T*(1.781478+T*(-1.821256+T*1.330274)))); if (X>0) { Prob=1-Prob } return Prob }
function strDev() {return d.attribute_stdev(0)}
function agiDev() {return d.attribute_stdev(1)}
function tuffDev() {return d.attribute_stdev(2)}
function endDev() {return d.attribute_stdev(3)}
function recDev() {return d.attribute_stdev(4)}
function disRDev() {return d.attribute_stdev(5)}
function anaADev() {return d.attribute_stdev(6)}
function focDev() {return d.attribute_stdev(7)}
function willDev() {return d.attribute_stdev(8)}
function creDev() {return d.attribute_stdev(9)}
function intuDev() {return d.attribute_stdev(10)}
function patDev() {return d.attribute_stdev(11)}
function memDev() {return d.attribute_stdev(12)}
function linADev() {return d.attribute_stdev(13)}
function spaSDev() {return d.attribute_stdev(14)}
function musDev() {return d.attribute_stdev(15)}
function kinSDev() {return d.attribute_stdev(16)}
function empDev() {return d.attribute_stdev(17)}
function socADev(){return d.attribute_stdev(18)}
function str() {return normalcdf(findZ(d.strength(), d.attribute_mean(0), d.attribute_stdev(0)))}
function agi() {return normalcdf(findZ(d.agility(), d.attribute_mean(1), d.attribute_stdev(1)))}
function tuff() {return normalcdf(findZ(d.toughness(), d.attribute_mean(2), d.attribute_stdev(2)))}
function end() {return normalcdf(findZ(d.endurance(), d.attribute_mean(3), d.attribute_stdev(3)))}
function rec() {return normalcdf(findZ(d.recuperation(), d.attribute_mean(4), d.attribute_stdev(4)))}
function disR() {return normalcdf(findZ(d.disease_resistance(), d.attribute_mean(5), d.attribute_stdev(5)))}
function anaA() {return normalcdf(findZ(d.analytical_ability(), d.attribute_mean(6), d.attribute_stdev(6)))}
function foc() {return normalcdf(findZ(d.focus(), d.attribute_mean(7), d.attribute_stdev(7)))}
function will() {return normalcdf(findZ(d.willpower(), d.attribute_mean(8), d.attribute_stdev(8)))}
function cre() {return normalcdf(findZ(d.creativity(), d.attribute_mean(9), d.attribute_stdev(9)))}
function intu() {return normalcdf(findZ(d.intuition(), d.attribute_mean(10), d.attribute_stdev(10)))}
function pat() {return normalcdf(findZ(d.patience(), d.attribute_mean(11), d.attribute_stdev(11)))}
function mem() {return normalcdf(findZ(d.memory(), d.attribute_mean(12), d.attribute_stdev(12)))}
function linA() {return normalcdf(findZ(d.linguistic_ability(), d.attribute_mean(13), d.attribute_stdev(13)))}
function spaS() {return normalcdf(findZ(d.spatial_sense(), d.attribute_mean(14), d.attribute_stdev(14)))}
function mus() {return normalcdf(findZ(d.musicality(), d.attribute_mean(15), d.attribute_stdev(15)))}
function kinS() {return normalcdf(findZ(d.kinesthetic_sense(), d.attribute_mean(16), d.attribute_stdev(16)))}
function emp() {return normalcdf(findZ(d.empathy(), d.attribute_mean(17), d.attribute_stdev(17)))}
function socA() {return normalcdf(findZ(d.social_awareness(), d.attribute_mean(18), d.attribute_stdev(18)))}
function d_str() {return d.strength()-d.attribute_mean(0)}
function d_agi() {return d.agility()-d.attribute_mean(1)}
function d_tuff() {return d.toughness()-d.attribute_mean(2)}
function d_end() {return d.endurance()-d.attribute_mean(3)}
function d_rec() {return d.recuperation()-d.attribute_mean(4)}
function d_disR() {return d.disease_resistance()-d.attribute_mean(5)}
function d_anaA() {return d.analytical_ability()-d.attribute_mean(6)}
function d_foc() {return d.focus()-d.attribute_mean(7)}
function d_will() {return d.willpower()-d.attribute_mean(8)}
function d_cre() {return d.creativity()-d.attribute_mean(9)}
function d_intu() {return d.intuition()-d.attribute_mean(10)}
function d_pat() {return d.patience()-d.attribute_mean(11)}
function d_mem() {return d.memory()-d.attribute_mean(12)}
function d_linA() {return d.linguistic_ability()-d.attribute_mean(13)}
function d_spaS() {return d.spatial_sense()-d.attribute_mean(14)}
function d_mus() {return d.musicality()-d.attribute_mean(15)}
function d_kinS() {return d.kinesthetic_sense()-d.attribute_mean(16)}
function d_emp() {return d.empathy()-d.attribute_mean(17)}
function d_socA() {return d.social_awareness()-d.attribute_mean(18)}
function findAlternative(x, y){return normalcdf(findZ(x, 0, y))}
totalAttributes=10;
avgMDeviation=
(
(d_str()*1.2)+
(d_agi()*1)+
(d_tuff()*1.3)+
(d_end()*1)+
(d_rec()*.8)+
(d_disR()*.8)+
(d_will()*.7)+
(d_spaS()*1.1)+
(d_kinS()*.9)+
(d_foc()*.8)
)/totalAttributes;
avgDev=(
(
(strDev()*1.2)+
(agiDev()*1)+
(tuffDev()*1.3)+
(endDev()*1)+
(recDev()*.8)+
(disRDev()*.8)+
(willDev()*.7)+
(spaSDev()*1.1)+
(kinSDev()*.9)+
(focDev()*.8)
)
/totalAttributes);
Math.round(findAlternative(avgMDeviation, avgDev)*100);
"
I don't know what skills really are yet. To me they seem a hybrid setup between attributes and labors...
37/name="Wood cutter"
37/attributes="1::strength:1.1,agility:1.1,endurance:1.1,willpower:0.9,spatial sense:1.2, kinesthetic sense:0.9"
37/traits=""
38/name="Trapper"
38/attributes="1::agility:1,analytical ability:1,creativity:1,spatial sense:1.1"
38/traits=""
38/skills=""
39/name="Trapper, Alt"
39/script="
function findZ(x, mean, stdev){ var result = ((x-mean)/stdev); return result}
function normalcdf(X){ var T=1/(1+.2316419*Math.abs(X)); var D=.3989423*Math.exp(-X*X/2); var Prob=D*T*(.3193815+T*(-.3565638+T*(1.781478+T*(-1.821256+T*1.330274)))); if (X>0) { Prob=1-Prob } return Prob }
function strDev() {return d.attribute_stdev(0)}
function agiDev() {return d.attribute_stdev(1)}
function tuffDev() {return d.attribute_stdev(2)}
function endDev() {return d.attribute_stdev(3)}
function recDev() {return d.attribute_stdev(4)}
function disRDev() {return d.attribute_stdev(5)}
function anaADev() {return d.attribute_stdev(6)}
function focDev() {return d.attribute_stdev(7)}
function willDev() {return d.attribute_stdev(8)}
function creDev() {return d.attribute_stdev(9)}
function intuDev() {return d.attribute_stdev(10)}
function patDev() {return d.attribute_stdev(11)}
function memDev() {return d.attribute_stdev(12)}
function linADev() {return d.attribute_stdev(13)}
function spaSDev() {return d.attribute_stdev(14)}
function musDev() {return d.attribute_stdev(15)}
function kinSDev() {return d.attribute_stdev(16)}
function empDev() {return d.attribute_stdev(17)}
function socADev(){return d.attribute_stdev(18)}
function str() {return normalcdf(findZ(d.strength(), d.attribute_mean(0), d.attribute_stdev(0)))}
function agi() {return normalcdf(findZ(d.agility(), d.attribute_mean(1), d.attribute_stdev(1)))}
function tuff() {return normalcdf(findZ(d.toughness(), d.attribute_mean(2), d.attribute_stdev(2)))}
function end() {return normalcdf(findZ(d.endurance(), d.attribute_mean(3), d.attribute_stdev(3)))}
function rec() {return normalcdf(findZ(d.recuperation(), d.attribute_mean(4), d.attribute_stdev(4)))}
function disR() {return normalcdf(findZ(d.disease_resistance(), d.attribute_mean(5), d.attribute_stdev(5)))}
function anaA() {return normalcdf(findZ(d.analytical_ability(), d.attribute_mean(6), d.attribute_stdev(6)))}
function foc() {return normalcdf(findZ(d.focus(), d.attribute_mean(7), d.attribute_stdev(7)))}
function will() {return normalcdf(findZ(d.willpower(), d.attribute_mean(8), d.attribute_stdev(8)))}
function cre() {return normalcdf(findZ(d.creativity(), d.attribute_mean(9), d.attribute_stdev(9)))}
function intu() {return normalcdf(findZ(d.intuition(), d.attribute_mean(10), d.attribute_stdev(10)))}
function pat() {return normalcdf(findZ(d.patience(), d.attribute_mean(11), d.attribute_stdev(11)))}
function mem() {return normalcdf(findZ(d.memory(), d.attribute_mean(12), d.attribute_stdev(12)))}
function linA() {return normalcdf(findZ(d.linguistic_ability(), d.attribute_mean(13), d.attribute_stdev(13)))}
function spaS() {return normalcdf(findZ(d.spatial_sense(), d.attribute_mean(14), d.attribute_stdev(14)))}
function mus() {return normalcdf(findZ(d.musicality(), d.attribute_mean(15), d.attribute_stdev(15)))}
function kinS() {return normalcdf(findZ(d.kinesthetic_sense(), d.attribute_mean(16), d.attribute_stdev(16)))}
function emp() {return normalcdf(findZ(d.empathy(), d.attribute_mean(17), d.attribute_stdev(17)))}
function socA() {return normalcdf(findZ(d.social_awareness(), d.attribute_mean(18), d.attribute_stdev(18)))}
function d_str() {return d.strength()-d.attribute_mean(0)}
function d_agi() {return d.agility()-d.attribute_mean(1)}
function d_tuff() {return d.toughness()-d.attribute_mean(2)}
function d_end() {return d.endurance()-d.attribute_mean(3)}
function d_rec() {return d.recuperation()-d.attribute_mean(4)}
function d_disR() {return d.disease_resistance()-d.attribute_mean(5)}
function d_anaA() {return d.analytical_ability()-d.attribute_mean(6)}
function d_foc() {return d.focus()-d.attribute_mean(7)}
function d_will() {return d.willpower()-d.attribute_mean(8)}
function d_cre() {return d.creativity()-d.attribute_mean(9)}
function d_intu() {return d.intuition()-d.attribute_mean(10)}
function d_pat() {return d.patience()-d.attribute_mean(11)}
function d_mem() {return d.memory()-d.attribute_mean(12)}
function d_linA() {return d.linguistic_ability()-d.attribute_mean(13)}
function d_spaS() {return d.spatial_sense()-d.attribute_mean(14)}
function d_mus() {return d.musicality()-d.attribute_mean(15)}
function d_kinS() {return d.kinesthetic_sense()-d.attribute_mean(16)}
function d_emp() {return d.empathy()-d.attribute_mean(17)}
function d_socA() {return d.social_awareness()-d.attribute_mean(18)}
function findAlternative(x, y){return normalcdf(findZ(x, 0, y))}
totalAttributes=4;
avgMDeviation=
(
(d_agi()*1)+
(d_anaA()*1)+
(d_cre()*1)+
(d_spaS()*1.1)
)/totalAttributes;
avgDev=
Math.sqrt
(
(
Math.pow((agiDev()*1),2)+
Math.pow((anaADev()*1),2)+
Math.pow((creDev()*1),2)+
Math.pow((spaSDev()*1.1),2)
)
/
totalAttributes
);
findAlternative(avgMDeviation, avgDev)*100;
"
40/name="Close Combat"
40/attributes="1::strength:1.2,agility:1,toughness:1.3,endurance:1,recuperation:0.8,disease resistance:0.8,willpower:0.7,spatial sense:1.1,kinesthetic sense:0.9,focus:0.8"
40/traits=""
40/skills=""
41/name="Close Combat, alt"
41/script="
function findZ(x, mean, stdev){ var result = ((x-mean)/stdev); return result}
function normalcdf(X){ var T=1/(1+.2316419*Math.abs(X)); var D=.3989423*Math.exp(-X*X/2); var Prob=D*T*(.3193815+T*(-.3565638+T*(1.781478+T*(-1.821256+T*1.330274)))); if (X>0) { Prob=1-Prob } return Prob }
function strDev() {return d.attribute_stdev(0)}
function agiDev() {return d.attribute_stdev(1)}
function tuffDev() {return d.attribute_stdev(2)}
function endDev() {return d.attribute_stdev(3)}
function recDev() {return d.attribute_stdev(4)}
function disRDev() {return d.attribute_stdev(5)}
function anaADev() {return d.attribute_stdev(6)}
function focDev() {return d.attribute_stdev(7)}
function willDev() {return d.attribute_stdev(8)}
function creDev() {return d.attribute_stdev(9)}
function intuDev() {return d.attribute_stdev(10)}
function patDev() {return d.attribute_stdev(11)}
function memDev() {return d.attribute_stdev(12)}
function linADev() {return d.attribute_stdev(13)}
function spaSDev() {return d.attribute_stdev(14)}
function musDev() {return d.attribute_stdev(15)}
function kinSDev() {return d.attribute_stdev(16)}
function empDev() {return d.attribute_stdev(17)}
function socADev(){return d.attribute_stdev(18)}
function str() {return normalcdf(findZ(d.strength(), d.attribute_mean(0), d.attribute_stdev(0)))}
function agi() {return normalcdf(findZ(d.agility(), d.attribute_mean(1), d.attribute_stdev(1)))}
function tuff() {return normalcdf(findZ(d.toughness(), d.attribute_mean(2), d.attribute_stdev(2)))}
function end() {return normalcdf(findZ(d.endurance(), d.attribute_mean(3), d.attribute_stdev(3)))}
function rec() {return normalcdf(findZ(d.recuperation(), d.attribute_mean(4), d.attribute_stdev(4)))}
function disR() {return normalcdf(findZ(d.disease_resistance(), d.attribute_mean(5), d.attribute_stdev(5)))}
function anaA() {return normalcdf(findZ(d.analytical_ability(), d.attribute_mean(6), d.attribute_stdev(6)))}
function foc() {return normalcdf(findZ(d.focus(), d.attribute_mean(7), d.attribute_stdev(7)))}
function will() {return normalcdf(findZ(d.willpower(), d.attribute_mean(8), d.attribute_stdev(8)))}
function cre() {return normalcdf(findZ(d.creativity(), d.attribute_mean(9), d.attribute_stdev(9)))}
function intu() {return normalcdf(findZ(d.intuition(), d.attribute_mean(10), d.attribute_stdev(10)))}
function pat() {return normalcdf(findZ(d.patience(), d.attribute_mean(11), d.attribute_stdev(11)))}
function mem() {return normalcdf(findZ(d.memory(), d.attribute_mean(12), d.attribute_stdev(12)))}
function linA() {return normalcdf(findZ(d.linguistic_ability(), d.attribute_mean(13), d.attribute_stdev(13)))}
function spaS() {return normalcdf(findZ(d.spatial_sense(), d.attribute_mean(14), d.attribute_stdev(14)))}
function mus() {return normalcdf(findZ(d.musicality(), d.attribute_mean(15), d.attribute_stdev(15)))}
function kinS() {return normalcdf(findZ(d.kinesthetic_sense(), d.attribute_mean(16), d.attribute_stdev(16)))}
function emp() {return normalcdf(findZ(d.empathy(), d.attribute_mean(17), d.attribute_stdev(17)))}
function socA() {return normalcdf(findZ(d.social_awareness(), d.attribute_mean(18), d.attribute_stdev(18)))}
function d_str() {return d.strength()-d.attribute_mean(0)}
function d_agi() {return d.agility()-d.attribute_mean(1)}
function d_tuff() {return d.toughness()-d.attribute_mean(2)}
function d_end() {return d.endurance()-d.attribute_mean(3)}
function d_rec() {return d.recuperation()-d.attribute_mean(4)}
function d_disR() {return d.disease_resistance()-d.attribute_mean(5)}
function d_anaA() {return d.analytical_ability()-d.attribute_mean(6)}
function d_foc() {return d.focus()-d.attribute_mean(7)}
function d_will() {return d.willpower()-d.attribute_mean(8)}
function d_cre() {return d.creativity()-d.attribute_mean(9)}
function d_intu() {return d.intuition()-d.attribute_mean(10)}
function d_pat() {return d.patience()-d.attribute_mean(11)}
function d_mem() {return d.memory()-d.attribute_mean(12)}
function d_linA() {return d.linguistic_ability()-d.attribute_mean(13)}
function d_spaS() {return d.spatial_sense()-d.attribute_mean(14)}
function d_mus() {return d.musicality()-d.attribute_mean(15)}
function d_kinS() {return d.kinesthetic_sense()-d.attribute_mean(16)}
function d_emp() {return d.empathy()-d.attribute_mean(17)}
function d_socA() {return d.social_awareness()-d.attribute_mean(18)}
function findAlternative(x, y){return normalcdf(findZ(x, 0, y))}
totalAttributes=10;
avgMDeviation=
(
(d_str()*1.2)+
(d_agi()*1)+
(d_tuff()*1.3)+
(d_end()*1)+
(d_rec()*.8)+
(d_disR()*.8)+
(d_will()*.7)+
(d_spaS()*1.1)+
(d_kinS()*.9)+
(d_foc()*.8)
)/totalAttributes;
avgDev=
Math.sqrt
(
(
Math.pow((strDev() *1.2) ,2) +
Math.pow((agiDev() *1) ,2) +
Math.pow((tuffDev() *1.3) ,2) +
Math.pow((endDev() *1) ,2) +
Math.pow((recDev() *.8) ,2) +
Math.pow((disRDev() *.8) ,2) +
Math.pow((willDev() *.7) ,2) +
Math.pow((spaSDev() *1.1) ,2) +
Math.pow((kinSDev() *.9) ,2) +
Math.pow((focDev() *.8) ,2)
)
/
totalAttributes
);
Math.round(findAlternative(avgMDeviation, avgDev)*100);
"
waffle
most of the attributes for roles have been taken directly from the wiki (http://dwarffortresswiki.org/index.php/Attributes#Skills_by_Associated_Attributes). i'm purely working under the assumption it's not complete bs. :P perhaps we should add some default weights? in regards to your cook, it's hard to tell you what might be happening. what are your weights? do you have other cooks with more skill? way better attributes? i can take a look if you want to send me the save.
i'm pretty sure i've got all the jobs fixed, so you don't need to worry about those anymore.
waffle
most of the attributes for roles have been taken directly from the wiki (http://dwarffortresswiki.org/index.php/Attributes#Skills_by_Associated_Attributes). i'm purely working under the assumption it's not complete bs. :P perhaps we should add some default weights? in regards to your cook, it's hard to tell you what might be happening. what are your weights? do you have other cooks with more skill? way better attributes? i can take a look if you want to send me the save.
i'm pretty sure i've got all the jobs fixed, so you don't need to worry about those anymore.
Yeah i know it's from the wiki not you ;p some of them just don't make sense though in my mind. For the weights i just 90% on attribs, 10% on skills. I have no other cooks, it was a young embark.
On general weights, i wonder if Toady assigned any importance to specific skills for each profession. Usually he's very detailed when it comes to things like this so maybe he did. Taking the cook as an example, would KS be that important? whereas for a melee soldier/wrestler it should be very important. Should physical vs mental attribs be weighted differently...well i guess we could go on forever and i doubt we'll never know for sure anyways. I think it best just to keep things simple for now :)
yeah i'm not happy with the current method to determine the ratings either, it certainly has some flaws which i'm hoping i can correct using thistleknot's work. since we don't know if any attributes are weighted, the safest bet is just to leave the weighting of individual aspects at 1.0 and just apply a global weight to aspect groups as you did. this is what i intend to do with the default roles i'll have packaged in, as i'm assuming most people will never bother tweaking individual weights.
I feel horrible, I had a bit of a cavein accident, one miner died, other one knocked unconscious. Worst thing, one had a baby on the job. 6 days old. Baby survived, but had both legs broken and lower spine broken. The mother was the one knocked unconscious I think, (similar names, is that how it works?), but she just left the baby. Baby crawled all the way back to the dining hall, draging it's broken body along.i wouldn't mind getting my hands on that save to take a look if it's not too much trouble.
Now the problem is DT does not see the baby, It's name is nowhere to be found, my bookkeeper reports 53 dwarfs, DF only 52. Has DF already given up on this broken baby? Surely this baby is not a vampire?
Just found this which may be of interest from a FotF post by Toady:
Q: Attributes are supposed to impact performance at various tasks, but according to my testing impact of attributes on quality of products is completely unimportant compared to skill. There is no noticeable difference between "legendary carpenter with a boundless creative imagination" and "legendary carpenter (with average creativity)". Is it intended?
A: It's not intended, but that is how it is, for all attributes and all skills (with some combat related exceptions probably). In response to the discussion, creativity is an attribute for carpentry and it does effect the roll, but skill outpaces it. To check, just ran a test - an unskilled, meager creativity dwarf with no other notable atts made 10 lowest quality items, where an unskilled, great creativity dwarf with no other notable atts had 5 come out well-crafted. Once they are legendary and churning out exceptional goods and masterpieces, it doesn't matter anymore. I don't want attributes to dominate the game, but I think they should be important even at the highest levels. It kind of makes me want to split quality into different categories though.
So, i would guess it's similar for all crafting in which case creativity could have more value as an attribute.
Close Combat, alt"
1/script="
function findZ(x, mean, stdev){ var result = ((x-mean)/stdev); return result}
function normalcdf(X){ var T=1/(1+.2316419*Math.abs(X)); var D=.3989423*Math.exp(-X*X/2); var Prob=D*T*(.3193815+T*(-.3565638+T*(1.781478+T*(-1.821256+T*1.330274)))); if (X>0) { Prob=1-Prob } return Prob }
function strDev() {return d.attribute_stdev(0)}
function agiDev() {return d.attribute_stdev(1)}
function tuffDev() {return d.attribute_stdev(2)}
function endDev() {return d.attribute_stdev(3)}
function recDev() {return d.attribute_stdev(4)}
function disRDev() {return d.attribute_stdev(5)}
function anaADev() {return d.attribute_stdev(6)}
function focDev() {return d.attribute_stdev(7)}
function willDev() {return d.attribute_stdev(8)}
function creDev() {return d.attribute_stdev(9)}
function intuDev() {return d.attribute_stdev(10)}
function patDev() {return d.attribute_stdev(11)}
function memDev() {return d.attribute_stdev(12)}
function linADev() {return d.attribute_stdev(13)}
function spaSDev() {return d.attribute_stdev(14)}
function musDev() {return d.attribute_stdev(15)}
function kinSDev() {return d.attribute_stdev(16)}
function empDev() {return d.attribute_stdev(17)}
function socADev(){return d.attribute_stdev(18)}
function str() {return normalcdf(findZ(d.strength(), d.attribute_mean(0), d.attribute_stdev(0)))}
function agi() {return normalcdf(findZ(d.agility(), d.attribute_mean(1), d.attribute_stdev(1)))}
function tuff() {return normalcdf(findZ(d.toughness(), d.attribute_mean(2), d.attribute_stdev(2)))}
function end() {return normalcdf(findZ(d.endurance(), d.attribute_mean(3), d.attribute_stdev(3)))}
function rec() {return normalcdf(findZ(d.recuperation(), d.attribute_mean(4), d.attribute_stdev(4)))}
function disR() {return normalcdf(findZ(d.disease_resistance(), d.attribute_mean(5), d.attribute_stdev(5)))}
function anaA() {return normalcdf(findZ(d.analytical_ability(), d.attribute_mean(6), d.attribute_stdev(6)))}
function foc() {return normalcdf(findZ(d.focus(), d.attribute_mean(7), d.attribute_stdev(7)))}
function will() {return normalcdf(findZ(d.willpower(), d.attribute_mean(8), d.attribute_stdev(8)))}
function cre() {return normalcdf(findZ(d.creativity(), d.attribute_mean(9), d.attribute_stdev(9)))}
function intu() {return normalcdf(findZ(d.intuition(), d.attribute_mean(10), d.attribute_stdev(10)))}
function pat() {return normalcdf(findZ(d.patience(), d.attribute_mean(11), d.attribute_stdev(11)))}
function mem() {return normalcdf(findZ(d.memory(), d.attribute_mean(12), d.attribute_stdev(12)))}
function linA() {return normalcdf(findZ(d.linguistic_ability(), d.attribute_mean(13), d.attribute_stdev(13)))}
function spaS() {return normalcdf(findZ(d.spatial_sense(), d.attribute_mean(14), d.attribute_stdev(14)))}
function mus() {return normalcdf(findZ(d.musicality(), d.attribute_mean(15), d.attribute_stdev(15)))}
function kinS() {return normalcdf(findZ(d.kinesthetic_sense(), d.attribute_mean(16), d.attribute_stdev(16)))}
function emp() {return normalcdf(findZ(d.empathy(), d.attribute_mean(17), d.attribute_stdev(17)))}
function socA() {return normalcdf(findZ(d.social_awareness(), d.attribute_mean(18), d.attribute_stdev(18)))}
function d_str() {return d.strength()-d.attribute_mean(0)}
function d_agi() {return d.agility()-d.attribute_mean(1)}
function d_tuff() {return d.toughness()-d.attribute_mean(2)}
function d_end() {return d.endurance()-d.attribute_mean(3)}
function d_rec() {return d.recuperation()-d.attribute_mean(4)}
function d_disR() {return d.disease_resistance()-d.attribute_mean(5)}
function d_anaA() {return d.analytical_ability()-d.attribute_mean(6)}
function d_foc() {return d.focus()-d.attribute_mean(7)}
function d_will() {return d.willpower()-d.attribute_mean(8)}
function d_cre() {return d.creativity()-d.attribute_mean(9)}
function d_intu() {return d.intuition()-d.attribute_mean(10)}
function d_pat() {return d.patience()-d.attribute_mean(11)}
function d_mem() {return d.memory()-d.attribute_mean(12)}
function d_linA() {return d.linguistic_ability()-d.attribute_mean(13)}
function d_spaS() {return d.spatial_sense()-d.attribute_mean(14)}
function d_mus() {return d.musicality()-d.attribute_mean(15)}
function d_kinS() {return d.kinesthetic_sense()-d.attribute_mean(16)}
function d_emp() {return d.empathy()-d.attribute_mean(17)}
function d_socA() {return d.social_awareness()-d.attribute_mean(18)}
function findAlternative(x, y){return normalcdf(findZ(x, 0, y))}
totalAttributes=10;
avgMDeviation=
(
((d_str()/strDev())*1.2)+
((d_agi()/agiDev())*1)+
((d_tuff()/tuffDev())*1.3)+
((d_end()/endDev())*1)+
((d_rec()/recDev())*.8)+
((d_disR()/disRDev())*.8)+
((d_will()/willDev())*.7)+
((d_spaS()/spaSDev())*1.1)+
((d_kinS()/kinSDev())*.9)+
((d_foc()/focDev())*.8)
)/totalAttributes;
avgDev=
Math.sqrt
(
(
Math.pow(1.2,2)+
Math.pow(1,2)+
Math.pow(1.3,2)+
Math.pow(1,2)+
Math.pow(.8,2)+
Math.pow(.8,2)+
Math.pow(.7,2)+
Math.pow(1.1,2)+
Math.pow(.9,2)+
Math.pow(.8,2)
)
/
totalAttributes
);
Math.round(findAlternative(avgMDeviation, avgDev)*100)"
I feel horrible, I had a bit of a cavein accident, one miner died, other one knocked unconscious. Worst thing, one had a baby on the job. 6 days old. Baby survived, but had both legs broken and lower spine broken. The mother was the one knocked unconscious I think, (similar names, is that how it works?), but she just left the baby. Baby crawled all the way back to the dining hall, draging it's broken body along.i wouldn't mind getting my hands on that save to take a look if it's not too much trouble.
Now the problem is DT does not see the baby, It's name is nowhere to be found, my bookkeeper reports 53 dwarfs, DF only 52. Has DF already given up on this broken baby? Surely this baby is not a vampire?
In the version of Therapist packaged with Masterwork 1.5.1+, I can't load all migrants into Therapist as soon as the game pauses with the "Some migrants have arrived" message. They only appear in Therapist after they have moved onto the game screen. I've never had this problem before. It's very useful to be able to see all your migrants as soon as the game pauses so you can easily modify their labors immediately instead of watching the screen until no more have come for a while.
I believe Meph is using splinterz's patched version as of 1.5.1, so maybe it's a consequence of his changes? Anyone else notice this?
I feel horrible, I had a bit of a cavein accident, one miner died, other one knocked unconscious. Worst thing, one had a baby on the job. 6 days old. Baby survived, but had both legs broken and lower spine broken. The mother was the one knocked unconscious I think, (similar names, is that how it works?), but she just left the baby. Baby crawled all the way back to the dining hall, draging it's broken body along.
Now the problem is DT does not see the baby, It's name is nowhere to be found, my bookkeeper reports 53 dwarfs, DF only 52. Has DF already given up on this broken baby? Surely this baby is not a vampire?
virtual int write_short(const VIRTADDR &addr, const short &val) = 0;
Program received signal SIGSEGV, Segmentation fault.
DFInstanceLinux::read_raw (this=0xfee3b0, addr=@0x1, bytes=8, buffer=...) at src/dfinstancelinux.cpp:220
220 for(VIRTADDR ptr = addr; ptr < addr+ bytes; ptr += step_size) {
* On x86-64 systems, the size that POKEDATA writes is 8 bytes instead of
* 4, so we need to use the sizeof( long ) as our step size.
but is there any way to get around that? (Because naively making stepsize be sizeof(short) didn't help either :P )[custom_roles]
size=22
1/name="% Bonecarver"
1/attributes/size=5
1/attributes/1/id=agility
1/attributes/1/weight=0.5
1/attributes/2/id=endurance
1/attributes/2/weight=0.5
1/attributes/3/id=creativity
1/attributes/3/weight=1.0
1/attributes/4/id=spatial sense
1/attributes/4/weight=0.5
1/attributes/5/id=kinesthetic sense
1/attributes/5/weight=0.5
1/skills/size=1
1/skills/1/id=37
2/name="% Leatherworker"
2/attributes/size=6
2/attributes/1/id=strength
2/attributes/2/id=agility
2/attributes/3/id=endurance
2/attributes/4/id=creatvity
2/attributes/5/id=spatial sense
2/attributes/6/id=kinesthetic sense
2/skills/size=1
2/skills/1/id=36
3/name="* Hauler"
3/attributes/size=18
3/attributes/1/id=-strength
3/attributes/2/id=-agility
3/attributes/3/id=-toughness
3/attributes/4/id=-endurance
3/attributes/5/id=-disease resistance
3/attributes/6/id=-recuperation
3/attributes/7/id=-analytical ability
3/attributes/8/id=-creatvity
3/attributes/9/id=-empathy
3/attributes/10/id=-focus
3/attributes/11/id=-intuition
3/attributes/12/id=-kinesthetic sense
3/attributes/13/id=-linguistic ability
3/attributes/14/id=-memory
3/attributes/15/id=-patience
3/attributes/16/id=-social awareness
3/attributes/17/id=-spatial sense
3/attributes/18/id=-willpower
4/name="+ Medic"
4/attributes/size=3
4/attributes/1/id=analytical ability
4/attributes/2/id=memory
4/attributes/3/id=intuition
4/skills/size=1
4/skills/1/id=60
4/traits/size = 2
4/traits/1/id=20
4/traits/2/id=23
5/name="+ Nurse"
5/attributes/size=4
5/attributes/1/id=memory
5/attributes/2/id=agility
5/attributes/3/id=analytical ability
5/attributes/4/id=empathy
5/traits/size=2
5/traits/1/id=20
5/traits/1/weight=0.8
5/traits/2/id=23
5/traits/2/weight=0.2
6/name="- Woodworker"
6/attributes/size=6
6/attributes/1/id=strength
6/attributes/1/weight=0.5
6/attributes/2/id=endurance
6/attributes/2/weight=0.5
6/attributes/3/id=creativity
6/attributes/3/weight=1.0
6/attributes/4/id=spatial sense
6/attributes/4/weight=0.5
6/attributes/5/id=kinesthetic sense
6/attributes/5/weight=0.5
6/attributes/6/id=agility
6/attributes/6/weight=0.5
6/skills/size=1
6/skills/1/id=2
7/name=". Engraver"
7/attributes/size=4
7/attributes/1/id=agility
7/attributes/1/weight=0.5
7/attributes/2/id=creativity
7/attributes/2/weight=1.0
7/attributes/3/id=spatial sense
7/attributes/3/weight=0.5
7/attributes/4/id=kinesthetic sense
7/attributes/4/weight=0.5
7/skills/size=1
7/skills/1/id=3
8/name=". Miner"
8/attributes/size=6
8/attributes/1/id=willpower
8/attributes/2/id=strength
8/attributes/3/id=endurance
8/attributes/4/id=toughness
8/attributes/5/id=spatial sense
8/attributes/6/id=kinesthetic sense
8/skills/size=1
8/skills/1/id=0
9/name=": Metalworker"
9/attributes/size=6
9/attributes/1/id=strength
9/attributes/1/weight=0.5
9/attributes/2/id=endurance
9/attributes/2/weight=0.5
9/attributes/3/id=creativity
9/attributes/3/weight=1.0
9/attributes/4/id=spatial sense
9/attributes/4/weight=0.5
9/attributes/5/id=kinesthetic sense
9/attributes/5/weight=0.5
9/attributes/6/id=agility
9/attributes/6/weight=0.5
9/skills/size=2
9/skills/1/id=27
9/skills/2/id=28
10/name=": Metalcrafter"
10/attributes/size=6
10/attributes/1/id=strength
10/attributes/1/weight=0.5
10/attributes/2/id=endurance
10/attributes/2/weight=0.5
10/attributes/3/id=creativity
10/attributes/3/weight=1.0
10/attributes/4/id=spatial sense
10/attributes/4/weight=0.5
10/attributes/5/id=kinesthetic sense
10/attributes/5/weight=0.5
10/attributes/6/id=agility
10/attributes/6/weight=0.5
10/skills/size=2
10/skills/1/id=29
10/skills/2/id=34
11/name="; Brewer"
11/attributes/size=3
11/attributes/1/id=strength
11/attributes/2/id=agility
11/attributes/3/id=kinesthetic sense
11/skills/size=1
11/skills/1/id=14
12/name="; Cook"
12/attributes/size=4
12/attributes/1/id=analytical ability
12/attributes/1/weight=0.5
12/attributes/2/id=agility
12/attributes/2/weight=0.5
12/attributes/3/id=creativity
12/attributes/3/weight=1.0
12/attributes/4/id=kinesthetic sense
12/attributes/4/weight=0.5
12/skills/size=1
12/skills/1/id=21
13/name="; Farmer"
13/attributes/size=4
13/attributes/1/id=strength
13/attributes/2/id=agility
13/attributes/3/id=endurance
13/attributes/4/id=kinesthetic sense
13/skills/size=1
13/skills/1/id=22
14/name="^ Admin"
14/attributes/size=8
14/attributes/1/id=linguistic ability
14/attributes/2/id=empathy
14/attributes/3/id=social awareness
14/attributes/4/id=analytical ability
14/attributes/5/id=creativity
14/attributes/6/id=memory
14/attributes/7/id=intuition
14/attributes/8/id=focus
14/traits/size=2
14/traits/1/id=19
14/traits/2/id=20
14/skills/size=3
14/skills/1/id=74
14/skills/2/id=75
14/skills/1/id=77
15/name="^ Lawdwarf"
15/attributes_weight=0.8
15/traits_weight=0.2
15/attributes/size=3
15/attributes/1/id=-strength
15/attributes/2/id=-agility
15/attributes/3/id=-endurance
15/traits/size=1
15/traits/1/id=-1
16/name="` Jewler"
16/attributes/size=5
16/attributes/1/id=agility
16/attributes/1/weight=0.5
16/attributes/2/id=creativity
16/attributes/2/weight=1.0
16/attributes/3/id=analytical ability
16/attributes/3/weight=0.5
16/attributes/4/id=spatial sense
16/attributes/4/weight=0.75
16/attributes/5/id=kinesthetic sense
16/attributes/5/weight=0.75
16/skills/size=2
16/skills/1/id=30
16/skills/2/id=31
17/name="` Strand Extractor"
17/attributes/size=5
17/attributes/1/id=strength
17/attributes/2/id=agility
17/attributes/3/id=endurance
17/attributes/4/id=analytical ability
17/attributes/5/id=kinesthetic sense
17/skills/size=1
17/skills/1/id=26
18/name="o Mason"
18/attributes/size=6
18/attributes/1/id=agility
18/attributes/1/weight=0.5
18/attributes/2/id=strength
18/attributes/2/weight=0.5
18/attributes/3/id=endurance
18/attributes/3/weight=0.5
18/attributes/4/id=creativity
18/attributes/4/weight=1.0
18/attributes/5/id=spatial sense
18/attributes/5/weight=0.5
18/attributes/6/id=kinesthetic sense
18/attributes/6/weight=0.5
18/skills/size=1
18/skills/1/id=4
19/name="o Mechanic"
19/attributes/size=6
19/attributes/1/id=strength
19/attributes/1/weight=0.5
19/attributes/2/id=agility
19/attributes/2/weight=0.5
19/attributes/3/id=endurance
19/attributes/3/weight=0.5
19/attributes/4/id=analytical ability
19/attributes/4/weight=0.5
19/attributes/5/id=creativity
19/attributes/5/weight=1.0
19/attributes/6/id=spatial sense
19/attributes/6/weight=0.5
19/skills/size=1
19/skills/1/id=55
20/name="o Potter"
20/attributes/size=5
20/attributes/1/id=agility
20/attributes/1/weight=0.5
20/attributes/2/id=endurance
20/attributes/2/weight=0.5
20/attributes/3/id=creativity
20/attributes/3/weight=1.0
20/attributes/4/id=spatial sense
20/attributes/4/weight=0.5
20/attributes/5/id=kinesthetic sense
20/attributes/5/weight=0.5
20/skills/size=1
20/skills/1/id=33
21/name="~ Marksdwarf"
21/attributes/size=4
21/attributes/1/id=agility
21/attributes/2/id=focus
21/attributes/3/id=spatial sense
21/attributes/4/id=kinesthetic sense
21/traits/size=1
21/traits/1/id=1
21/skills/size=7
21/skills/1/id=89
21/skills/2/id=44
21/skills/3/id=42
21/skills/4/id=57
21/skills/5/id=100
21/skills/6/id=53
21/skills/7/id=52
22/name="~ Military"
22/attributes/size=6
22/attributes/1/id=strength
22/attributes/2/id=agility
22/attributes/3/id=toughness
22/attributes/4/id=willpower
22/attributes/5/id=spatial sense
22/attributes/6/id=kinesthetic sense
22/traits/size=1
22/traits/1/id=1
22/skills/size=20
22/skills/1/id=46
22/skills/2/id=38
22/skills/3/id=102
22/skills/4/id=105
22/skills/5/id=99
22/skills/6/id=42
22/skills/7/id=104
22/skills/8/id=40
22/skills/9/id=51
22/skills/10/id=41
22/skills/11/id=89
22/skills/12/id=50
22/skills/13/id=45
22/skills/14/id=43
22/skills/15/id=103
22/skills/16/id=39
22/skills/17/id=86
22/skills/18/id=98
22/skills/19/id=54
22/skills/20/id=101
I'm having trouble with custom roles - they aren't showing up at all.
Am I supposed to start numbering them at 1, or at 47 to follow the default roles? (I'm starting at 1.)
If I have a typo somewhere, would that cause them not to load?
Any other gotchas I might be running into?
Here's what I added to game_data.ini:
snip
I feel horrible, I had a bit of a cavein accident, one miner died, other one knocked unconscious. Worst thing, one had a baby on the job. 6 days old. Baby survived, but had both legs broken and lower spine broken. The mother was the one knocked unconscious I think, (similar names, is that how it works?), but she just left the baby. Baby crawled all the way back to the dining hall, draging it's broken body along.
Now the problem is DT does not see the baby, It's name is nowhere to be found, my bookkeeper reports 53 dwarfs, DF only 52. Has DF already given up on this broken baby? Surely this baby is not a vampire?
Here is the save game:
http://dl.dropbox.com/u/1940986/region1.zip
after rebooting and playing on, the baby is still crawling around with broken back and legs (maybe a zombie ;) I don't think a newborn will survive 2 broken legs and a back for very long.) and DT doesn't think it exhists.
edit: oh and it was the mother of the baby killed in the cave in. The father is around, but hey he doesn't care.
I'm having trouble with custom roles - they aren't showing up at all.
Am I supposed to start numbering them at 1, or at 47 to follow the default roles? (I'm starting at 1.)
If I have a typo somewhere, would that cause them not to load?
Any other gotchas I might be running into?
Here's what I added to game_data.ini:Code: [Select][custom_roles]
size=22
1/name="% Bonecarver"
1/attributes/size=5
1/attributes/1/id=agility
1/attributes/1/weight=0.5
1/attributes/2/id=endurance
1/attributes/2/weight=0.5
1/attributes/3/id=creativity
1/attributes/3/weight=1.0
1/attributes/4/id=spatial sense
1/attributes/4/weight=0.5
1/attributes/5/id=kinesthetic sense
1/attributes/5/weight=0.5
1/skills/size=1
1/skills/1/id=37
2/name="% Leatherworker"
2/attributes/size=6
2/attributes/1/id=strength
2/attributes/2/id=agility
2/attributes/3/id=endurance
2/attributes/4/id=creatvity
2/attributes/5/id=spatial sense
2/attributes/6/id=kinesthetic sense
2/skills/size=1
2/skills/1/id=36
3/name="* Hauler"
3/attributes/size=18
3/attributes/1/id=-strength
3/attributes/2/id=-agility
3/attributes/3/id=-toughness
3/attributes/4/id=-endurance
3/attributes/5/id=-disease resistance
3/attributes/6/id=-recuperation
3/attributes/7/id=-analytical ability
3/attributes/8/id=-creatvity
3/attributes/9/id=-empathy
3/attributes/10/id=-focus
3/attributes/11/id=-intuition
3/attributes/12/id=-kinesthetic sense
3/attributes/13/id=-linguistic ability
3/attributes/14/id=-memory
3/attributes/15/id=-patience
3/attributes/16/id=-social awareness
3/attributes/17/id=-spatial sense
3/attributes/18/id=-willpower
4/name="+ Medic"
4/attributes/size=3
4/attributes/1/id=analytical ability
4/attributes/2/id=memory
4/attributes/3/id=intuition
4/skills/size=1
4/skills/1/id=60
4/traits/size = 2
4/traits/1/id=20
4/traits/2/id=23
5/name="+ Nurse"
5/attributes/size=4
5/attributes/1/id=memory
5/attributes/2/id=agility
5/attributes/3/id=analytical ability
5/attributes/4/id=empathy
5/traits/size=2
5/traits/1/id=20
5/traits/1/weight=0.8
5/traits/2/id=23
5/traits/2/weight=0.2
6/name="- Woodworker"
6/attributes/size=6
6/attributes/1/id=strength
6/attributes/1/weight=0.5
6/attributes/2/id=endurance
6/attributes/2/weight=0.5
6/attributes/3/id=creativity
6/attributes/3/weight=1.0
6/attributes/4/id=spatial sense
6/attributes/4/weight=0.5
6/attributes/5/id=kinesthetic sense
6/attributes/5/weight=0.5
6/attributes/6/id=agility
6/attributes/6/weight=0.5
6/skills/size=1
6/skills/1/id=2
7/name=". Engraver"
7/attributes/size=4
7/attributes/1/id=agility
7/attributes/1/weight=0.5
7/attributes/2/id=creativity
7/attributes/2/weight=1.0
7/attributes/3/id=spatial sense
7/attributes/3/weight=0.5
7/attributes/4/id=kinesthetic sense
7/attributes/4/weight=0.5
7/skills/size=1
7/skills/1/id=3
8/name=". Miner"
8/attributes/size=6
8/attributes/1/id=willpower
8/attributes/2/id=strength
8/attributes/3/id=endurance
8/attributes/4/id=toughness
8/attributes/5/id=spatial sense
8/attributes/6/id=kinesthetic sense
8/skills/size=1
8/skills/1/id=0
9/name=": Metalworker"
9/attributes/size=6
9/attributes/1/id=strength
9/attributes/1/weight=0.5
9/attributes/2/id=endurance
9/attributes/2/weight=0.5
9/attributes/3/id=creativity
9/attributes/3/weight=1.0
9/attributes/4/id=spatial sense
9/attributes/4/weight=0.5
9/attributes/5/id=kinesthetic sense
9/attributes/5/weight=0.5
9/attributes/6/id=agility
9/attributes/6/weight=0.5
9/skills/size=2
9/skills/1/id=27
9/skills/2/id=28
10/name=": Metalcrafter"
10/attributes/size=6
10/attributes/1/id=strength
10/attributes/1/weight=0.5
10/attributes/2/id=endurance
10/attributes/2/weight=0.5
10/attributes/3/id=creativity
10/attributes/3/weight=1.0
10/attributes/4/id=spatial sense
10/attributes/4/weight=0.5
10/attributes/5/id=kinesthetic sense
10/attributes/5/weight=0.5
10/attributes/6/id=agility
10/attributes/6/weight=0.5
10/skills/size=2
10/skills/1/id=29
10/skills/2/id=34
11/name="; Brewer"
11/attributes/size=3
11/attributes/1/id=strength
11/attributes/2/id=agility
11/attributes/3/id=kinesthetic sense
11/skills/size=1
11/skills/1/id=14
12/name="; Cook"
12/attributes/size=4
12/attributes/1/id=analytical ability
12/attributes/1/weight=0.5
12/attributes/2/id=agility
12/attributes/2/weight=0.5
12/attributes/3/id=creativity
12/attributes/3/weight=1.0
12/attributes/4/id=kinesthetic sense
12/attributes/4/weight=0.5
12/skills/size=1
12/skills/1/id=21
13/name="; Farmer"
13/attributes/size=4
13/attributes/1/id=strength
13/attributes/2/id=agility
13/attributes/3/id=endurance
13/attributes/4/id=kinesthetic sense
13/skills/size=1
13/skills/1/id=22
14/name="^ Admin"
14/attributes/size=8
14/attributes/1/id=linguistic ability
14/attributes/2/id=empathy
14/attributes/3/id=social awareness
14/attributes/4/id=analytical ability
14/attributes/5/id=creativity
14/attributes/6/id=memory
14/attributes/7/id=intuition
14/attributes/8/id=focus
14/traits/size=2
14/traits/1/id=19
14/traits/2/id=20
14/skills/size=3
14/skills/1/id=74
14/skills/2/id=75
14/skills/1/id=77
15/name="^ Lawdwarf"
15/attributes_weight=0.8
15/traits_weight=0.2
15/attributes/size=3
15/attributes/1/id=-strength
15/attributes/2/id=-agility
15/attributes/3/id=-endurance
15/traits/size=1
15/traits/1/id=-1
16/name="` Jewler"
16/attributes/size=5
16/attributes/1/id=agility
16/attributes/1/weight=0.5
16/attributes/2/id=creativity
16/attributes/2/weight=1.0
16/attributes/3/id=analytical ability
16/attributes/3/weight=0.5
16/attributes/4/id=spatial sense
16/attributes/4/weight=0.75
16/attributes/5/id=kinesthetic sense
16/attributes/5/weight=0.75
16/skills/size=2
16/skills/1/id=30
16/skills/2/id=31
17/name="` Strand Extractor"
17/attributes/size=5
17/attributes/1/id=strength
17/attributes/2/id=agility
17/attributes/3/id=endurance
17/attributes/4/id=analytical ability
17/attributes/5/id=kinesthetic sense
17/skills/size=1
17/skills/1/id=26
18/name="o Mason"
18/attributes/size=6
18/attributes/1/id=agility
18/attributes/1/weight=0.5
18/attributes/2/id=strength
18/attributes/2/weight=0.5
18/attributes/3/id=endurance
18/attributes/3/weight=0.5
18/attributes/4/id=creativity
18/attributes/4/weight=1.0
18/attributes/5/id=spatial sense
18/attributes/5/weight=0.5
18/attributes/6/id=kinesthetic sense
18/attributes/6/weight=0.5
18/skills/size=1
18/skills/1/id=4
19/name="o Mechanic"
19/attributes/size=6
19/attributes/1/id=strength
19/attributes/1/weight=0.5
19/attributes/2/id=agility
19/attributes/2/weight=0.5
19/attributes/3/id=endurance
19/attributes/3/weight=0.5
19/attributes/4/id=analytical ability
19/attributes/4/weight=0.5
19/attributes/5/id=creativity
19/attributes/5/weight=1.0
19/attributes/6/id=spatial sense
19/attributes/6/weight=0.5
19/skills/size=1
19/skills/1/id=55
20/name="o Potter"
20/attributes/size=5
20/attributes/1/id=agility
20/attributes/1/weight=0.5
20/attributes/2/id=endurance
20/attributes/2/weight=0.5
20/attributes/3/id=creativity
20/attributes/3/weight=1.0
20/attributes/4/id=spatial sense
20/attributes/4/weight=0.5
20/attributes/5/id=kinesthetic sense
20/attributes/5/weight=0.5
20/skills/size=1
20/skills/1/id=33
21/name="~ Marksdwarf"
21/attributes/size=4
21/attributes/1/id=agility
21/attributes/2/id=focus
21/attributes/3/id=spatial sense
21/attributes/4/id=kinesthetic sense
21/traits/size=1
21/traits/1/id=1
21/skills/size=7
21/skills/1/id=89
21/skills/2/id=44
21/skills/3/id=42
21/skills/4/id=57
21/skills/5/id=100
21/skills/6/id=53
21/skills/7/id=52
22/name="~ Military"
22/attributes/size=6
22/attributes/1/id=strength
22/attributes/2/id=agility
22/attributes/3/id=toughness
22/attributes/4/id=willpower
22/attributes/5/id=spatial sense
22/attributes/6/id=kinesthetic sense
22/traits/size=1
22/traits/1/id=1
22/skills/size=20
22/skills/1/id=46
22/skills/2/id=38
22/skills/3/id=102
22/skills/4/id=105
22/skills/5/id=99
22/skills/6/id=42
22/skills/7/id=104
22/skills/8/id=40
22/skills/9/id=51
22/skills/10/id=41
22/skills/11/id=89
22/skills/12/id=50
22/skills/13/id=45
22/skills/14/id=43
22/skills/15/id=103
22/skills/16/id=39
22/skills/17/id=86
22/skills/18/id=98
22/skills/19/id=54
22/skills/20/id=101
I'm having another issue with migrants: it isn't sorting the waves properly. The first three waves (including initial 7) are fine, but the fourth wave is added to the third wave.
The problem exists in version 7 as well, but 0.6.12 works fine. The new update hasn't fixed this unfortunately.
Hi, I've got two suggestions for features I'd like to see in the Therapist
Firstly, I'd love to see the job listings at the top of the GUI get shown at an angle, as shown in the example below.
(http://i.imgur.com/YH3yn.png)
I thought this up and made the example long ago but never got around to suggesting it. I've pretty much become familiar enough with the jobs to not desire the easier readability of them, but it would still be nice and possibly appreciated by others.
How I'd like to see it in DT: An Icon around the top left corner of the job names area to toggle it on/off and or a checkbox in the options to do the same.
Secondly, I'd like to be able to toggle whether the Dwarves' last names appear in game and in DT as Dwarvish or English. This is due to Otin Waterbends being more easily remembered visually scanned for than Otin Fialdasorenering.
I use custom profession titles to better sort my Dwarves but sometimes there are still two similar names in the same profession or squad. I've actually got an Urist Ustuthduthal and Urist Ushriringtak currently in the same squad. If their last names were in English I think it would easier to see them separate. As for nicknames I don't care for them as they need be manually applied in addition to and are superfluous to custom profession names. They're also unpleasing to look at. I still appreciate their functionality, I just don't have a use for them personally most of the time.
How I'd like to see it in DT: A checkbox in the options to "Show dwarf last names in English" and a right-click option over a specific dwarf to "Show last name in English".
I decided to make these suggestions upon the agreement of another Here (http://boards.4chan.org/vg/res/2148091#2279307) and Here (http://boards.4chan.org/vg/res/2148091#2279421)
Thank you for reading my suggestions, this is my first post so if this isn't the place to be making suggestions I apologize and will remove the post to make it where appropriate.
Firstly, I'd love to see the job listings at the top of the GUI get shown at an angle, as shown in the example below.
(http://i.imgur.com/YH3yn.png)
I thought this up and made the example long ago but never got around to suggesting it. I've pretty much become familiar enough with the jobs to not desire the easier readability of them, but it would still be nice and possibly appreciated by others.
How I'd like to see it in DT: An Icon around the top left corner of the job names area to toggle it on/off and or a checkbox in the options to do the same.
...
I decided to make these suggestions upon the agreement of another Here (http://boards.4chan.org/vg/res/2148091#2279307) and Here (http://boards.4chan.org/vg/res/2148091#2279421)
Thank you for reading my suggestions, this is my first post so if this isn't the place to be making suggestions I apologize and will remove the post to make it where appropriate.
Some people never learned how. I've been in a customer service role for so long that I just picked it up.
I have just spent the last hour trying to find the new offsets... Anybody having better luck than me?
I haven't tested in-game, but my disassembly indicates that the squad vector should be:I have just spent the last hour trying to find the new offsets... Anybody having better luck than me?
Try those, they seem to work (sandbox posted them on the dfhack irc):
[...]
squad_vector=0x01824a58
The "world" object has already been determined to be at 0x17D2CF8 (and works nicely in DFHack), and squads.all is at offset 0x51D64 within it, so sandbox's address should be correct (it's actually 0x1824A5C, but Dwarf Therapist still thinks that vectors have their start/end pointers at base+4 and base+8 when they've been at base+0 and base+4 ever since Toady moved to MSVC 2010). The offset you posted is associated with some unknown data within "ui" (unk235c).I haven't tested in-game, but my disassembly indicates that the squad vector should be:I have just spent the last hour trying to find the new offsets... Anybody having better luck than me?
Try those, they seem to work (sandbox posted them on the dfhack irc):
[...]
squad_vector=0x01824a58
squad_vector=0x01612E14
I am getting an error message when using dwarf therapist with 34.06 graphics.Unidentified game version.
I haven't tested in-game, but my disassembly indicates that the squad vector should be:The "world" object has already been determined to be at 0x17D2CF8 (and works nicely in DFHack), and squads.all is at offset 0x51D64 within it, so sandbox's address should be correct (it's actually 0x1824A5C, but Dwarf Therapist still thinks that vectors have their start/end pointers at base+4 and base+8 when they've been at base+0 and base+4 ever since Toady moved to MSVC 2010). The offset you posted is associated with some unknown data within "ui" (unk235c).
squad_vector=0x01612E14
good luck getting it updated guys. hope it happens fast :P
for the record, despite all the complaining DF is pretty playable without DT, its just that therapist makes assigning jobs a bit easier in the long run.
[snipped]
[snipped]
I followed the steps, but it isn't working. Is it because I am using a different version of DT? I have the newer one that has lists for attributes and roles, etcYeah, these offsets are for vanilla Dwarf Therapist. Splinterz is currently maintaining the development (new features) branch until it can be merged into the main branch.
this should work for my branch (attributes, roles, etc..), but let me know if you run into problems.Spoiler: 0.34.06_graphics.ini (click to show/hide)
v0.34.06 Layouts Posted
Layouts are posted for all 3 operating systems and should download automatically.
Ummm. Actually. Wait, what? Download automatically? DT does that?
New problem. I am using the standard release again. I downloaded a fresh copy from the main website from the link in the first post of this thread. All of the dwarfs are showing up as no job(-1) in DT. *edit* this is on version 34.06 graphics
Ummm. Actually. Wait, what? Download automatically? DT does that?
iirc, when you boot up DT and attempt to attach to a version of DF that it does not recognize, it'll check to see if there's a new offset file that fits the version and load it out accordingly if there is one. So no you don't have to download the ini and drop it in the layouts folder, or paste it into a new ini file manually
Got another weird bug. I assigned a bunch of migrants to wood cutting via DT and retired my old wood cutters into the military, but soon got job cancellation spam about lack of wood. I looked and there were plenty of axes in the weapon stockpile and all of the dwarfs with wood cutting were sitting idle in the meeting area. I double checked by going to prefs and labors and saw that wood cutting was indeed enabled in-game. On a hunch, I turned it off and back on inside the game and they all got up and picked up axes from the stockpile and got to work.
I can turn off the woodcutting labors from DT, but I have to turn it back on in-game for the dwarfs to do the tasks.
here's the packaged file with a few minor updates for those uncomfortable editing the ini files:
- added layouts for 34.06
- slightly tweaked the role formula once again for even shinier results
- fixed the sorting by name
download (http://www.mediafire.com/?04zvuyr9g97cu06)
@GoldenShadow: i haven't been able to reproduce any missing dwarves with my 5 test games so let me know if it does seem to be acting up and i'll try and fix it tomorrow
Kubukdatur Otungerib
Willpower 1,269 1,015
Strength 2,104 762
Toughness 1,552 1,414
Endurance 1,198 808
Spatial 879 2,267
Kinesthetic 433 1,051
Agility 818 1,397
Spoiler (click to show/hide)
I'm hitting a pretty big snag with the OS X version of therapist. I'm not sure if anyone has posted a similar issue or not, but I didn't see anything in the last 10 or so pages.Haven't quite worked out why it happens, but you can fix it by going to File > Clear user settings...
I'm running OS X 10.7, with DF 34.05, and using graphics/phoebus. I get the following:Spoiler (click to show/hide)
Anyone else seen this, or have any ideas?
Great work on the mac version, by the way. It's been nice having more regular maintenance/updates. :D
v0.34.06 Layouts Updated
Layouts are posted for all 3 operating systems and should download automatically.
Note, this is for vanilla Dwarf Therapist only, see post above for splinterz' release.
Direct Download Links:
- Windows (Graphics) v0.34.06 (http://www.dwarftherapist.com/memory_layouts/windows/v0.34.06_graphics.ini)
- Windows (Legacy) v0.34.06 (http://www.dwarftherapist.com/memory_layouts/windows/v0.34.06_legacy.ini)
- Linux v0.34.06 (http://www.dwarftherapist.com/memory_layouts/linux/v0.34.06.ini)
- Mac OSX v0.34.06 (http://www.dwarftherapist.com/memory_layouts/osx/v0.34.06.ini)
Spoiler (click to show/hide)
Thanks for the suggestion. You have to understand the .ini file is tweakable. Splinterz made up the .ini based on the wiki for attributes and did an enormous job coding them in. It is completely customizable as users may want to apply various tweaks, I made a close combat dwarf modded role: http://i39.tinypic.com/2nia4ht.jpg (http://i39.tinypic.com/2nia4ht.jpg)
Since there are differences in opinions, it's probably impossible to make a single document that covers everyone's contributions, it could be done though... maybe a pastebin .ini?
I just downloaded the DT with role suggestions and have some comments.
I have two guys, both of whom are legendary miners +5. They both started simultaneously and worked in the same burrow, going from 0 skill to legendary +0 in dirt, then moved to stone, and I watched them. I have to say, the most important thing (and possibly only thing) about a miner is agility. I've seen this several times. In the race to legendary, which is all that I would think is really worth caring about, a more agile miner will win by a mile, because they move more quickly between dig sites.
-snip
I would weight agility massively higher in your system -- as is, you don't even include it as an attribute for a miner.
How awesome would it be for a sub-interface to create roles inside DT itself?
better would be to give those aspects you wanted valued more a higher weight. i'm thinking just a simple select an attribute/skill/trait and give it a weight, repeat, until you've defined your role.That's exactly what I had in mind. :D
that's a very good point. as Thistleknot mentioned, i simply used the wiki as a guide for creating the default role sets. i'll consider changing the default role, but for now you can simply override the default by creating a custom role in your dwarf therapist.ini with the same name. which is a nice segue into the next point brought up:
Hmm. The migration waves don't sort properly in my DT even with the new ini file DE posted. Using the linux version.
I fixed the layouts for both osx & linux. See above (http://www.bay12forums.com/smf/index.php?topic=66525.msg3124069#msg3124069) for instructions on downloading the new layout.Hmm. The migration waves don't sort properly in my DT even with the new ini file DE posted. Using the linux version.
Setting turn_count=0x053b fixed it. Got help from sandbox on irc. <3
...
Yes. The idea is very cute, but if the wiki contains information that is mostly false, untested, and/or unimplemented, features implemented based upon this are of questionable value. Really, unless you are role-playing, there has to be some testable outcome. Role-playing is nice, but if the tool is telling me the wrong guy should be my miner, that's not helpful, and mining is one of the few things it's possible to really test well. I best there is a direct relation between mining speed and agility, and what else is there to mining except that? Maybe one guy might sleep more than than the other guy, but if agility dominates, it dominates. And it's possible to find this out.
I'll do more research.
Ah, gotcha. I got ahead of myself being excited about the idea that I overlooked that roles just select skills, traits and attributes to display the values for. I'm not sure how the weights work as I've not had a chance to mess with them yet. They sound like what I'm looking for. Getting 34.06 sorted and going to test them with a new fort now.
here's the packaged file with a few minor updates for those uncomfortable editing the ini files:
- added layouts for 34.06
- slightly tweaked the role formula once again for even shinier results
- fixed the sorting by name
download (http://www.mediafire.com/?kbt2gls4b4lgbc4)
@GoldenShadow: i haven't been able to reproduce any missing dwarves with my 5 test games so let me know if it does seem to be acting up and i'll try and fix it tomorrow
I'm running the OSX version (thanks by the way, it's amazing we finally have this...) and I've run into a couple issues.
I can't change the nickname or professions through therapist; I edit the name and it's not reflected in therapist, though it's shown as a pending change. When I commit changes, it isn't reflected in the game.
Also, my waves are being split up strangely when sorting by wave. Every migrant wave is split up into different waves of three or four dwarves each. Children born in the fortress are considered their own wave, which I suppose makes sense.
Running 34.06 (same troubles in .05) with Mayday graphics. My files are also packaged inside the .app from the JollyBastion mod.
here's the packaged file with a few minor updates for those uncomfortable editing the ini files:
- added layouts for 34.06
- slightly tweaked the role formula once again for even shinier results
- fixed the sorting by name
download (http://www.mediafire.com/?kbt2gls4b4lgbc4)
@GoldenShadow: i haven't been able to reproduce any missing dwarves with my 5 test games so let me know if it does seem to be acting up and i'll try and fix it tomorrow
The bug regarding mining/woodcutting labors not forcing them to pick up equipemnt is present on your version as well as the official DT. I forged 5 new steel picks, enabled 5 new miners and turned off all other labors. They stay idle and don't get the picks. If have to go in-game pref>labors and toggle Mining off and back on and they all jump up to get get their equipment and start mining.
I deleted the 34.06_graphics.ini and restarted DT. it detected the game version and downloaded the ini, but I am getting bad numbers on the attributes tab.
http://www.freeimagehosting.net/a5uo2
Suggestion, if it hasn't already been brought up:
Something I'd like to see out of DT is the capability to treat custom professions as job masks or logical overlays to assigned labors rather than abs :)olute configurations -- all too often I want Urist McSmith and Urist McJones to have the same core profession (farmer, for example), but have McSmith butcher and cook while McJones processes plants and brews. As it is it's a little inconvenient having to select the profession and then manually (re)select additional jobs, or try to have someone basically have the jobs of two or more defined professions. Job masks would allow quite a bit more granular control over labor assignment.
babies born in between immigration waves are now counted as a seperate "wave". awesome.That's always been true. DT looks for the ID of each creature, as they occur in sequence. 1-7 will be dwarves, 8-10 will be groundhogs, 11-13 will be your first migrant wave, DT just interprets them into groups.
I have a question/suggestion about/for splinterz version
Can we combine multible roles into a new/custom one ?
For example I want to have the evaluation of a custom profession I defined, let it be my "Forager" (Woodcutter+Herbalist(+opt. Beekeeper)) for now.
Right now I just arranged the corresponding skills/roles to be next to each other in the gridview, but I´d rather just have the "Forager" role which is just combination of those 2 (+1/2) basic roles.
Well, I could just combine those 2+ roles by using the respective skills/attributes/traits/whatever in the ini-file, but it seems like a quite clumsy solution.
I wonder if its possible to let the Forager role use the respective other roles values (WC/Herb/(BK)) in the calculations.
Maybe in the Ini it could just look a bit like this..Spoiler (click to show/hide)
If this is already implented in some way, Id be thankful if someone could point me into the right direction, I cant find it myself right now.
btw.. Big thanks to all of you who work on this essential tool
I have a question/suggestion about/for splinterz version
Can we combine multible roles into a new/custom one ?
For example I want to have the evaluation of a custom profession I defined, let it be my "Forager" (Woodcutter+Herbalist(+opt. Beekeeper)) for now.
Right now I just arranged the corresponding skills/roles to be next to each other in the gridview, but I´d rather just have the "Forager" role which is just combination of those 2 (+1/2) basic roles.
Well, I could just combine those 2+ roles by using the respective skills/attributes/traits/whatever in the ini-file, but it seems like a quite clumsy solution.
I wonder if its possible to let the Forager role use the respective other roles values (WC/Herb/(BK)) in the calculations.
Maybe in the Ini it could just look a bit like this..Spoiler (click to show/hide)
If this is already implented in some way, Id be thankful if someone could point me into the right direction, I cant find it myself right now.
btw.. Big thanks to all of you who work on this essential tool
no it's not setup to handle recursive role declarations. you'll have to just add all the attributes, skills and traits to one role.
I too do not use debian. I compiled my DT so i have no issues.
any chance DT could be upgraded to tell you who the vampires are?
I've been trying, but just cannot get vanilla 0.6.12 to recognize v0.34.06. I do have a slightly odd situation because I run the linux DF and the windows DT under wine (because I don't do a .deb compatible distribution), but that shouldn't be an issue. Previously I've just dropped the right .ini files into the right memory_layout folders and I've been good to go. This worked, for example, with v0.34.02.I've run both under Wine, and never had trouble. When I have only run one native, DT doesn't see DF.
Call me spoiled, but I simply cannot run any reasonably sized fortress without DT anymore. It's not worth the pain.
I too do not use debian. I compiled my DT so i have no issues.
What source did you use? I had trouble even finding something compilable. (FWIW: I'm on Fedora.)
Just to be clear, here is the view on a Dwarf with DT I downloaded on March 15, "Dwarf Therapist-7.zip". You could see stats (some are misread in version 0.34.06 but it worked superfine in 0.34.05) and age. On Break dwarfs would show with a blue dot.Spoiler (click to show/hide)
Ok thanks, how one (that would be me :P ) restores layout to defaults/fix the issues?
snip
you'll have to update your layout files with the ones here (http://code.google.com/r/splintermind-attributes/source/browse/#hg%2Fetc%2Fmemory_layouts%2Fwindows) or download the last version from my previous post in the thread.
In the tooltip, the first x, with x being an option set to 10 by default, but changeable by user with the Options Menu.
In the right click/show details, if you get a scrollbar,..."
I too do not use debian. I compiled my DT so i have no issues.
What source did you use? I had trouble even finding something compilable. (FWIW: I'm on Fedora.)
i used the GIT address at the DT google code site to clone the branch and then compiled.
dam 108 pages.... can i ask about vampire do they still not show up in the list of dwarfs and if you change there names in the therapist do they still not change in the game
i started to be slightly annoyed with going back and forth between labours and roles so i've been toying with the idea of adding a roles pane to the dwarf details, or adding the top roles to the tooltip, or both! i'm concerned this extra pane is cluttering things. perhaps listing all the roles is a bit much as well, perhaps top 10 would be sufficient?
any feedback would be much appreciated!
I'd like a "mass nicknamer". Right now it'll just say "slow down there" so somebody thought about it and decided not to? Seems strange. Sometimes I want to check my units list for vampires and it's unsorted so it's annoying to have to search through the entire list a dozen times. Nicknames add quotes to the start, making people easy to find.Grab Splinterz' release. It allows mass nicknaming. When I process migrants, I name the unskilled ones "Blank" and being able to name 20 blanks at once is very useful.
any chance DT could be upgraded to tell you who the vampires are?
already implemented, look under options! ;)
i started to be slightly annoyed with going back and forth between labours and roles so i've been toying with the idea of adding a roles pane to the dwarf details, or adding the top roles to the tooltip, or both! i'm concerned this extra pane is cluttering things. perhaps listing all the roles is a bit much as well, perhaps top 10 would be sufficient?
any feedback would be much appreciated!
i started to be slightly annoyed with going back and forth between labours and roles so i've been toying with the idea of adding a roles pane to the dwarf details, or adding the top roles to the tooltip, or both! i'm concerned this extra pane is cluttering things. perhaps listing all the roles is a bit much as well, perhaps top 10 would be sufficient?
any feedback would be much appreciated!
any chance DT could be upgraded to tell you who the vampires are?
already implemented, look under options! ;)
Ok so I have poured over all 8 checks on options and NONE of them say anything about curses, etc.
I too do not use debian. I compiled my DT so i have no issues.
What source did you use? I had trouble even finding something compilable. (FWIW: I'm on Fedora.)
i used the GIT address at the DT google code site to clone the branch and then compiled.
Ah... thanks. My mistake was trying to go through the DT project page linked in this thread.
A little compilation and we are working once more!!
If using a top 3 or top 10 (static) only dispaly, it might be desirable to choose what roles are alloweed to be listed, otherwise roles that are displayed may be roles the player never assigns.
any chance DT could be upgraded to tell you who the vampires are?
already implemented, look under options! ;)
Ok so I have poured over all 8 checks on options and NONE of them say anything about curses, etc.
I'll have to get back to you on that later tonight then. I know it was Splinterz version that had the option. I've checked it myself for both child labors, and finding vampires...
So, I'm currently making a version of DwarfTherapist that implements lua scripting. I started yesterday with no experience with DwarfTherapist's code base, no experience with QT Creator, and my only experiences with lua is that of browsing the manual. From where I am now, I feel that I can pull this off. The lua scripts should be able to add pending changes, process information about the dwarfs and stuff like that.
Anybody got suggestions or comments for me?
So, I'm currently making a version of DwarfTherapist that implements lua scripting. I started yesterday with no experience with DwarfTherapist's code base, no experience with QT Creator, and my only experiences with lua is that of browsing the manual. From where I am now, I feel that I can pull this off. The lua scripts should be able to add pending changes, process information about the dwarfs and stuff like that.
Humor me will you, what's lua? So many languages, so little time... I think I saw your comment on reddit.
Syntactically, I think it's a crisp and fruity blend of Pascal and C, with spicy object-oriented overtones reminiscent of Python. It does not have C's syntactical sugar operators such as ++.Did I step into the Food Channel?
I find writing things in lua quite fun, even tough ive never done it, the tuts i read (wich are prob outdated) do make it look quite fun, and i was planning to use it whit the minecraft mod computercraft, but i nowhere found how to accept user input, and i had no inspiration.So, I'm currently making a version of DwarfTherapist that implements lua scripting. I started yesterday with no experience with DwarfTherapist's code base, no experience with QT Creator, and my only experiences with lua is that of browsing the manual. From where I am now, I feel that I can pull this off. The lua scripts should be able to add pending changes, process information about the dwarfs and stuff like that.
Humor me will you, what's lua? So many languages, so little time... I think I saw your comment on reddit.
Lua (http://www.lua.org/) is a 'little language'. You don't write entire programs in it, you write scripts that hook into a base program. It's integrated into some pretty big projects, such as the World of Warcraft client.
Syntactically, I think it's a crisp and fruity blend of Pascal and C, with spicy object-oriented overtones reminiscent of Python. It does not have C's syntactical sugar operators such as ++.
Semantically, it has newer concepts taken from Java, Python and Perl. E.g. closures and anonymous functions, coroutines, context-sensitive return values, a Perl-style generic for operator, and an equivalent to eval() at runtime.
Does the splinterz build have Linux memory layouts available for 34.06? I can't find anything in the Google page for the splinterz fork (which was also hard to locate, BTW) or anywhere.
Do we know how traits and attributes affect skilled labor? If a dwarf is matched to a role based on attributes, how does he differ from an opposite dwarf, unfit for the role, at the same task assuming equal skill levels. Does the one fit for the role work faster? produce higher quality items? skill up faster? none of the above?Attribute data on the wiki (http://dwarffortresswiki.org/index.php/Attributes#Skills_by_Associated_Attributes)
Do we know how traits and attributes affect skilled labor? If a dwarf is matched to a role based on attributes, how does he differ from an opposite dwarf, unfit for the role, at the same task assuming equal skill levels. Does the one fit for the role work faster? produce higher quality items? skill up faster? none of the above?
Bugzors: changing the skill weighting down to 0.00 in the options, and then changing it back to 1.00(or any number actually) has zero effect. DT requires a restart for it to start working again. You can set it down to 0.01 and changing it still works.
And something must be wrong with how DT values a skill, 2 examples:
dorf1 with just 500xp in gem setting is listed as being 97.79% fit for the job, without any skill weighting he is 45.23% fit.
dorf2 with just 1500xp in gem setting is listed as being 100% fit for the job, without any skill weighting he is 43.89% fit.
I wouldn't be surprised to see that having just set 1 gem(from 0xp) would change dorf3's fitness for the role a fair amount, i'll try and test that today or tomorrow.
I would hope to expect a skill level of 7-10 to start to out weight attributes in the calculations.
Edit: Quick test i did with dorf3, odd results.
At 0.01 skill weight 1 gem set took him from 49.36% to 49.71%
At 1.00 skill weight 1 gem set took him from 43.80% to 43.84% O.o
This makes zero sense, a far far far lower skill weight = a far higher fitness% increase? O.o
Bugzors: changing the skill weighting down to 0.00 in the options, and then changing it back to 1.00(or any number actually) has zero effect. DT requires a restart for it to start working again. You can set it down to 0.01 and changing it still works.
And something must be wrong with how DT values a skill, 2 examples:
dorf1 with just 500xp in gem setting is listed as being 97.79% fit for the job, without any skill weighting he is 45.23% fit.
dorf2 with just 1500xp in gem setting is listed as being 100% fit for the job, without any skill weighting he is 43.89% fit.
I wouldn't be surprised to see that having just set 1 gem(from 0xp) would change dorf3's fitness for the role a fair amount, i'll try and test that today or tomorrow.you can't use these assumptions. As it's based on what the average xp value is for all dwarf's (i.e. the mean), depending on what your min value is (most likely 0), and your max (whatever your max dwarf is at, say 1500), then deviations from the mean would start to throw %'s off, say your mean was 750.
I would hope to expect a skill level of 7-10 to start to out weight attributes in the calculations.
Edit: Quick test i did with dorf3, odd results.
At 0.01 skill weight 1 gem set took him from 49.36% to 49.71%
At 1.00 skill weight 1 gem set took him from 43.80% to 43.84% O.o
This makes zero sense, a far far far lower skill weight = a far higher fitness% increase? O.o
ok I didn't know htere were multiple versions... I just have the one that's under the first page here. what's the link to the other one>?this, I didn't know either until I saw some random posts in this thread, some of there have very interesting features.
ok I didn't know htere were multiple versions... I just have the one that's under the first page here. what's the link to the other one>?this, I didn't know either until I saw some random posts in this thread, some of there have very interesting features.
I know these versions are like little tests for proof of concept of new features and will eventually get integrated into the main release, but meanwhile could we have all the links to these other versions on the first page along with what they do? Just so that people that want to try them at their own risk can get them easily without hunting posts through all the thread.
Bugzors: changing the skill weighting down to 0.00 in the options, and then changing it back to 1.00(or any number actually) has zero effect. DT requires a restart for it to start working again. You can set it down to 0.01 and changing it still works.
And something must be wrong with how DT values a skill, 2 examples:
dorf1 with just 500xp in gem setting is listed as being 97.79% fit for the job, without any skill weighting he is 45.23% fit.
dorf2 with just 1500xp in gem setting is listed as being 100% fit for the job, without any skill weighting he is 43.89% fit.
I wouldn't be surprised to see that having just set 1 gem(from 0xp) would change dorf3's fitness for the role a fair amount, i'll try and test that today or tomorrow.
I would hope to expect a skill level of 7-10 to start to out weight attributes in the calculations.
Edit: Quick test i did with dorf3, odd results.
At 0.01 skill weight 1 gem set took him from 49.36% to 49.71%
At 1.00 skill weight 1 gem set took him from 43.80% to 43.84% O.o
This makes zero sense, a far far far lower skill weight = a far higher fitness% increase? O.o
what version are you using? are these tests with a role with only a skill, or are there traits and attributes as well? normally the farther from the mean an aspect gets, the more value it's considered to have. why would you only want to consider skills over 7?
i'll look into the zero issue with the global weights.
Creativity Kinesthetic Spatial
dorf1: 1250 1001 1498
dorf2: 1250 1004 1503
QuoteEdit: Quick test i did with dorf3, odd results.
At 0.01 skill weight 1 gem set took him from 49.36% to 49.71%
At 1.00 skill weight 1 gem set took him from 43.80% to 43.84% O.o
This makes zero sense, a far far far lower skill weight = a far higher fitness% increase? O.o
I don't get this last part. I get the weights, but what do you mean by 1 gem? 1 gem experience? If it's 1 gem experience, then your deviation from mean barely changed, (ex, mean is 750, 1 exp vs 0 exp to 750 is nothing). These numbers themselves would produce z-scores, and then these z-scores would be multiplied by either .01 or 1.
Example: A 1 gem (i.e. a 1 exp?... vs a mean somewhere around 750), would yield a deviation from mean of -749, converted to some negative z-score. Which would be multiplied by the weight. The .01 weight would minimize the z-score to .01 it's value, it also means the stdev of that dataset would also be reduced to .01 before being combined with the other standard deviations. In the end, the .01 weight would mean that the deviation from mean would contribute very little to the overall %, meaning attributes and skills would have a higher weight. The 1 weight would retain the same zscore, and standard deviation, contributing more to the overall %. Which means skills would contribute more to the overall %.
You're my HERO for including a mac option be default now. I do not miss the first time I tried to get it running using wine and realizing that I've overhauled my mac too far! :PAgreed. It would still be nice to get custom profession names to be able to be assigned through therapist though (right now it says it assigns them but doesn't change them in-game).
Spoiler: previous messages (click to show/hide)
The very latest version you posted.
Attributes and traits left as 1.00. Only 1 skill...gem setting. The 2 dorfs had near identicle attribs(ie only a few points out in each attrib)Code: [Select]Creativity Kinesthetic Spatial
dorf1: 1250 1001 1498
dorf2: 1250 1004 1503
No traits listed as associated with this skill.
Not only counting a skill if it's over 7, but at skill over 7-10 it starts to balance out vs attribs, ie they become equally important, not that a skill level of 6 suddenly has zero value, i never said that. As it stands dorf1 with 0.017% total skill xp is being shown as being over 50% better than if DT doesn't take skill into account. Can you see how that sounds completely insane?
And i guess you missed the number after the decimal point above, but with a skill weighting of just 0.01 it sees a 30xp(ie 1 gem set) as being worth 0.35%. But on that same gem set if i set the skill weight to 1.00 then it sees it as being only worth 0.04%...again, i shouldn't need to explain how this is wrong ;p
It's almost like 1xp is equal to 1 in an attribute(or combo of all attribs associated with the skill) instead of it taking into account the range for a skill's exp level goes upto 29k.
Edit: i just wanted to add: with all weights being at 1.00, each should have equal importance, but currently that is not the case, it's not even slightly out of balance, it's lighyears off. When a dorf is rated at ~45% on his attributes alone, a measly 500xp(~0.017% of the maximum xp he can get in a skill) should not equate to him suddenly being ~97% fit for the job. And now i'm off fishing :)
on the other hand we could go back to using a weighted average of the aspects, after scaling them to a percentile of the absolute maximums. thoughts?
I'd prefer if roles only took attributes and traits into account, since you can already sort by skill levels on the actual labors page.
Could someone help explain to me how I go about changing the roles formula for the splinterz version of Therapist.
I would like to customize them by changing the weighting of roles, a lot. for example i want my mechanics to be heavily intelligence weighted and my wardwarfs to put a 50% weighting on recouperability and disease resistance ONLY.
Looking at game_data.ini, I can find the formulas just right but the weightings dont make sense to me mathematically, they should add up to 1? For example:
26/name="Cook"
26/attributes/size=4
26/attributes/1/id=analytical ability
26/attributes/1/weight=0.5
26/attributes/2/id=agility
26/attributes/2/weight=0.5
26/attributes/3/id=creativity
26/attributes/3/weight=1.0
26/attributes/4/id=kinesthetic sense
26/attributes/4/weight=0.5
26/skills/size=1
26/skills/1/id=21
I want my cook to be more intelligent and creative than kinesthetic and agile, do I just make the weightings smaller? they total 2 instead of 1 so what if i change the total weights to equal 1.5???
Can I just delete weightings?
Also I thought I would just throw this out there... Old versions of dwarf therapist used to have a bar at the top (above all the rows in the labour tab) which enabled EVERY dwarf in whichever column you clicked's labour. ie: you could just click 1 box and EVERY dwarf you had would turn on/off stonehauling or whatever depending on the column you clicked. I remember using this feature SO MUCH and miss it a hell of a lot. I guess I will just have to set up custom professions...
I'm not sure how using a more skewed distribution is going to solve the problem...
Also, could I ask you not to retroactively add content to your posts via editing after further replies have been posted? I wouldn't even have seen what you wrote if I hadn't gone back for unrelated reasons.
I'm afraid the simplest solution might make the most sense here. I.e. scale everything to a range 0 to 1 (or 0% to 100%), linearly combine the aspects with the weights, and again renormalise to 0 to 1Yeah, I think that's what I was going for with the skewed distribution (since you pointed out z-scores don't work for non normal data). now most of the data does follow a normalish scheme, but we could convert to % more accurately if we did a skewed distribution.
Also I thought I would just throw this out there... Old versions of dwarf therapist used to have a bar at the top (above all the rows in the labour tab) which enabled EVERY dwarf in whichever column you clicked's labour. ie: you could just click 1 box and EVERY dwarf you had would turn on/off stonehauling or whatever depending on the column you clicked. I remember using this feature SO MUCH and miss it a hell of a lot. I guess I will just have to set up custom professions...
this feature is there, but you need to filter the dwarves by something, for example, gender/sex, and you'll have this bar at the location where the split occurs.
What Splinterz was proposing was something entirely different that doesn't take any consideration for where the dwarve's are in relation to each other, which I didn't agree with.
If you have a better solution, please, let us know.QuoteI'm afraid the simplest solution might make the most sense here. I.e. scale everything to a range 0 to 1 (or 0% to 100%), linearly combine the aspects with the weights, and again renormalise to 0 to 1Yeah, I think that's what I was going for with the skewed distribution (since you pointed out z-scores don't work for non normal data). now most of the data does follow a normalish scheme, but we could convert to % more accurately if we did a skewed distribution.
Spoiler (click to show/hide)
Urist has agility of about 10, while everyone else has one of -0.1.
Urist has strength of -1., while half of the population also has -1., and the other half +1.
Hence, as far as I can see in that case your formula would recommend us Urist over any other dwarf (in normalised terms, he's one stdev (=1.) below average in strength, but a whopping 10 stdevs above average in agility)
thistleknot:
For your future tests, just keep in mind that this issue wasn't about whether to ultimately compare the score to that of the other dwarves -- this was about whether computing the score initially from the relative values makes sense.
Let me give you an example. Let's say you want to decide who's a good dwarf for a job based on an equal weighting of their strength and agility. Let's say dwarf Urist here has agility of 10.1 (never mind the values DF actually uses) and a strength of 5. Let's say for simplicity that there are 100 other dwarves; in terms of agility, say all of them have agility 10. In terms of strength, let's say half of them have strength 5 and half have strength 15 [or something like that with larger stdev -- doesn't matter].
For agility across the population (including Urist), that gives me a stdev of about 0.01. For strength, a stdev of 5. If I normalise the values by dividing by their respective stdevs, this will essentially give a 5./0.01 = approx 500 times higher effective weight to the difference in agility compared to that in strength. I.e., if I'm not mistaken, your formula essentially assumes that the situation above is equivalent to one that looks like this (normalising by subtracting means and dividing by stdevs):
Urist has agility of about 10, while everyone else has one of -0.1.
Urist has strength of -1., while half of the population also has -1., and the other half +1.
Hence, as far as I can see in that case your formula would recommend us Urist over any other dwarf (in normalised terms, he's one stdev (=1.) below average in strength, but a whopping 10 stdevs above average in agility). In particular, it would prefer Urist at agility 10.1 and strength 5. over one of the dwarves with agility 10. and strength 15 (!) -- just because Urist happened to be 'so much better' in agility when measured in population stdevs.
Hope I didn't make a mistake somewhere, but if not, then that's maybe something to think about (or otherwise, to correct me on!).
Edit: typo etc.
Finally, some thoughts on the details of the data. I would generally advocate to try to keep matters simple and do as little as possible to the data as offered up by the game. That is, avoid weighing data, taking means into consideration and so forth. If you do, however, wish to improve things I could think of two very good metrics for the two key features I mentioned above, capability and potential. The first would be the rate at which a dwarf can do a job. The second would be a rate at which a dwarf gains experience whilst doing a job. Both can be measured in-game. As exact attribute and skill values at any one point can also be determined, it should be feasible to work out their exact relationships by relating those properties and then to model them. All it takes is a great measuring exercise. A rather laborious task, mind, but a possible one.
Most, though not all, of these roles map to a labour just like the skills presented on the standard labour tab. To me it would thus make sense, and enhance the usefulness of the tool, to replace the 'roles' indicator by a duplicate of the first tab, with the same capabilities in terms of directly activating and deactivating labours, just with a different set of data being showcased, whatever you eventually decide it to be. This way you could easily implement your choices, just based on different information.
Blasphemy! I will defend my analysis of my new convoluted formula, why? Because it's the only such analysis of data I've ever seen that attempts to weight deviations from mean (averaged weights does not do this). And it took me a long time to come up with.
In particular, it would prefer Urist at agility 10.1 and strength 5. over one of the dwarves with agility 10. and strength 15 (!) -- just because Urist happened to be 'so much better' in agility when measured in population stdevs.
it would be nice to incorporate something that gives a bit more value the farther from the average, but the only way this will work is if there's a way to transform or handle the massive skewing that skills have. we'll see...
I'm actually in the process of moving right now - Toady's timing is impeccable, as usual.
Long story short, you guys are on your own regarding offsets until Monday.
Sorry! :'(
it would be nice to incorporate something that gives a bit more value the farther from the average, but the only way this will work is if there's a way to transform or handle the massive skewing that skills have. we'll see...
[snipped]
a bit more info on what to do for us knowledgeless?Follow the four steps in the image below
didn't work for me though, did I forget anything?How would we know the answer to that question? :D
Jonesing for the update :)If you are on Windows, read up for the 34_07 DT information.
y'know, saying "go to this and this folder and copy the 34.06 file, paste it as a double then rename it as 34.07" would probably have been less work for you.
http://pastebin.com/UqrXd6mW
Thank you to both Slink and Lockyy for the contributions, however currently I am seeing that my dwarves are at zero happiness and have no assigned jobs. Could someone please post a pastebin with the contents of the latest file; I see to be unable to get it working.
The auto-updater doesn't seem to be pulling any of the layouts--I'm stuck at .02. Are the layouts the same for .03-.07, or alternatively, could someone throw up a zip somewhere?
much thanks to Thuvian, we brainstormed a way to not have to use frequency distributions, now we can get exact % by taking (instance-mean)/range = a perfect of ~-50%/~+50%, which will also work for skewed distributions! the distribution is the exact distribution of the sample! no guessing with frequency distributions!
Thanks, slink!
much thanks to Thuvian, we brainstormed a way to not have to use frequency distributions, now we can get exact % by taking (instance-mean)/range = a perfect of ~-50%/~+50%, which will also work for skewed distributions! the distribution is the exact distribution of the sample! no guessing with frequency distributions!
Sorry, that was a bit difficult to comprehend. Is "range" relative to the population or the absolute range of the aspects? What's "a perfect of ~-50%/~+50%" supposed to mean?
- + ++
Min's 146 198 444 695
Max's 1595 2108 2250 2537
I think I found the layout for Linux. It's my first time finding the offsets for DF so let me know if it works or not:
[info]
checksum=0x61b4fa72
version_name=v0.34.07
complete=true
[addresses]
translation_vector=0x9653ee0
language_vector=0x09653ec8
creature_vector=0x09612b8c
dwarf_race_index=0x095fa500
squad_vector=0x9650a94
current_year=0x095f8000
I think I found the layout for Linux. It's my first time finding the offsets for DF so let me know if it works or not:
[info]
checksum=0x61b4fa72
version_name=v0.34.07
complete=true
[addresses]
translation_vector=0x9653ee0
language_vector=0x09653ec8
creature_vector=0x09612b8c
dwarf_race_index=0x095fa500
squad_vector=0x9650a94
current_year=0x095f8000
Hmm, are you playing DF in graphics mode or are you playing with the original ascii?
I am on 64-bit Arch Linux, so unless there's a difference in the version of the builds we're using I may have to do some extra digging to figure out why it can't connect.
[info]
checksum=0x4f7592fe
version_name=v0.34.07 (graphics)
complete=true
[addresses]
translation_vector=0x0182f670
language_vector=0x00182f650
creature_vector=0x017eb758
dwarf_race_index=0x01617ebc
squad_vector=0x01829a58
current_year=0x0101e1f0
[offsets]
word_table=0x0000003c
string_buffer_offset=0x0000
[word_offsets]
base=0x0000
noun_singular=0x001C
noun_plural=0x0038
adjective=0x0054
verb=0x008C
present_simple_verb=0x00A8
past_simple_verb=0x00C4
past_participle_verb=0x00E0
present_participle_verb=0x00FC
[dwarf_offsets]
first_name=0x0000
nick_name=0x001C
last_name=0x0038
custom_profession=0x006C
profession=0x0088
race=0x008C
flags1=0x00E0
flags2=0x00E4
flags3=0x00e8
sex=0x00F8
mood=0x214
caste=0x00f8
id=0x00FC
recheck_equipment=0x01C0
birth_year=0x0240
current_job=0x0320
physical_attrs=0x3F8
turn_count=0x067c
states=0x06D0
souls=0x0778
likes=0x07B4
labors=0x07A0
squad_ref_id=0x08c0
happiness=0x0840
curse=0x5b8
[soul_details]
skills=0x0200
traits=0x0224
mental_attrs=0x0098
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x003C
members=0x0088
[position_offsets]
token=0x0000
flags=0x0020
general_name_singular=0x00E8
general_name_plural=0x0104
male_name_singular=0x0158
male_name_plural=0x0174
female_name_singluar=0x0120
female_name_plural=0x013C
custom_color_red=0x0382
custom_color_green=0x0380
[valid_flags_2]
size=0
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
8\name=a merchant escort
8\value=0x00000080
9\name="Dead, Jim."
9\value=0x00000002
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
[invalid_flags_3]
size=1
1\name=a ghost
1\value=0x00001000
I think I found the layout for Linux. It's my first time finding the offsets for DF so let me know if it works or not:
[info]
checksum=0x61b4fa72
version_name=v0.34.07
complete=true
[addresses]
translation_vector=0x9653ee0
language_vector=0x09653ec8
creature_vector=0x09612b8c
dwarf_race_index=0x095fa500
squad_vector=0x9650a94
current_year=0x095f8000
The offsets for your version are a bit iffy still, phys attributes not working for both those posted previously, and for some reason i'm getting merchants listed as being mine and i can change their jobs etc ;p equipment_recheck is another query as i've seen several different offsets for it.
Captain Mayday (the overseer of Nist Akath) certainly thought so.The offsets for your version are a bit iffy still, phys attributes not working for both those posted previously, and for some reason i'm getting merchants listed as being mine and i can change their jobs etc ;p equipment_recheck is another query as i've seen several different offsets for it.
[ETHIC:ENLIST_MERCHANTS:ACCEPTABLE]
I think I found the layout for Linux. It's my first time finding the offsets for DF so let me know if it works or not:
Updated v0.34.07_graphics.ini for Splinterz's branch v9.
Got lucky, the offsets from .06 seem to still work. Be warned, on my end (win x64, DT9), the physical attribute offset from DF.06 DOES work correctly, whereas the one posted by Gurgle causes me to have the problems he was describing. Maybe this will work for you, maybe not.
Everything seems fully functional so far, but I've only just embarked.
EDIT:Current Job fixed and confirmed working.
I think I found the layout for Linux. It's my first time finding the offsets for DF so let me know if it works or not:Thanks! Adding these to DwarfEngineer's 36.06 offsets and my splinterz's 36.06 offsets seems to have it all back up and running for me.
[dwarf_offsets]
first_name=0x0000
nick_name=0x001C
last_name=0x0038
custom_profession=0x006C
profession=0x0088
sex=0x00F8
Can somebody explain to me why the last_name works even though the memory scan's read of std::string of address+offset for last name gives me nothing?
Also, it seems as if sex is a short and not an int, is that right?
If you look through the src/dwarf.cpp file, it has pretty straightforward functions for reading everything to give you a clue as to what's happening. Best I can tell though, a dwarf can have many names (think legendary dwarves), so the last name may be in a word_chunk anywhere from the start of the last name offset to 0x18 past it (read_last_name() to read_chunked_name() ).Silly me, totally did no think of using the DT source as inspiration for an idea about the memory model. Thanks for reminding me.
i've added the 34.07 layout to my branched build. download the packaged version here. (http://www.mediafire.com/?fkhbjvkigo4kew8)
below is the raw text if you're comfortable updating manually.Spoiler: 34.07 role/attributes version layout (click to show/hide)
as always if you find any issues let me know and i'll update it asap.
i've added the 34.07 layout to my branched build. download the packaged version here. (http://www.mediafire.com/?fkhbjvkigo4kew8)
below is the raw text if you're comfortable updating manually.Spoiler: 34.07 role/attributes version layout (click to show/hide)
as always if you find any issues let me know and i'll update it asap.
Still no phys here :/ shows agil as -1 and str as 1 on every dwarf.
i've added the 34.07 layout to my branched build. download the packaged version here. (http://www.mediafire.com/?fkhbjvkigo4kew8)
below is the raw text if you're comfortable updating manually.Spoiler: 34.07 role/attributes version layout (click to show/hide)
as always if you find any issues let me know and i'll update it asap.
Still no phys here :/ shows agil as -1 and str as 1 on every dwarf.
just tested again with .06 and .07 and all is fine. you must have a version/layout mixup
Also, I'm curious as to whether we'll be able to set up viewing whether a dwarf is,
A.) a good fit for the role looking at every dwarf in your fortress currently? and
B.) is this dwarf a good fit for a role, universally? (A mediocre soldier may still be the best choice out of many other terrible soldiers. I want to know if they're good for the role altogether)
i've added the 34.07 layout to my branched build. download the packaged version here. (http://www.mediafire.com/?fkhbjvkigo4kew8)
below is the raw text if you're comfortable updating manually.Spoiler: 34.07 role/attributes version layout (click to show/hide)
as always if you find any issues let me know and i'll update it asap.
Still no phys here :/ shows agil as -1 and str as 1 on every dwarf.
just tested again with .06 and .07 and all is fine. you must have a version/layout mixup
i've added the 34.07 layout to my branched build.
Found the problem...i had copies of the 34.07 ini's which i was testing out various offsets with, and DT was reading everything in that directory, and obviously came across the older versions first/last and used those in preference to the file just named v0.34.07_graphics.ini, ie it was using "Copy of v0.34.07_graphics.ini" instead of the main file ;p so a tiny lil bug there.
@splinterzHe has been here:
Hey, would you mind uploading the source code for your branch to github or something?
Found the problem...i had copies of the 34.07 ini's which i was testing out various offsets with, and DT was reading everything in that directory, and obviously came across the older versions first/last and used those in preference to the file just named v0.34.07_graphics.ini, ie it was using "Copy of v0.34.07_graphics.ini" instead of the main file ;p so a tiny lil bug there.
Aaaagh. I couldn't work out what was wrong with mine, and was just suffering in silence until someone smarter came up with a new clean release... I always make copies before changing anything, and couldn;t work out what I had done wrong :'(
Thanks Intrinsic
As a layout user I've a new smallish pet peeve: please try to state the os your layout targets, it's getting very hard to find the right one using the search function.+1
[info]
checksum=0x20d42b0f
version_name=v0.34.07
complete=true
[addresses]
translation_vector=0x015bf940
language_vector=0x015bf928
creature_vector=0x0157e5ec
dwarf_race_index=0x01565f60
squad_vector=0x015bc4f4
current_year=0x01563a20
[offsets]
word_table=0x001C
[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024
[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0158
current_job=0x0284
turn_count=0x052b
states=0x0
souls=0x05f8
labors=0x0614
happiness=0x06a4
squad_ref_id=0x0708
[soul_details]
skills=0x01D4
traits=0x01EC
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x000C
members=0x0044
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
6)Save the file and ctrl+click on it and choose "Get info"Feature request: Can we get the ability to add dwarves to existing burrows?A great idea!
I'd really like that for vampire controlRather poor idea, vampire will ignore burrows on feeding.
Rather poor idea, vampire will ignore burrows on feeding.They'll comply for long enough to lock them in, raise the only accessible bridge, or violently murder them, though.
Just create a new military squad and assign the vampire(s) to it. Then station the squad wherever you like.Rather poor idea, vampire will ignore burrows on feeding.They'll comply for long enough to lock them in, raise the only accessible bridge, or violently murder them, though.
Feature request: Can we get the ability to add dwarves to existing burrows?A great idea!I'd really like that for vampire controlRather poor idea, vampire will ignore burrows on feeding.
Steps for OSX
1) Download latest version of DT.
2)Ctrl+click on DT and choose "Show package contents"
3)Go to Contents/MacOS/etc/memory_layouts/osx
4)Open up text edit
5)Paste this into a new text documentCode: [Select][info]
6)Save the file and ctrl+click on it and choose "Get info"
checksum=0x20d42b0f
version_name=v0.34.07
complete=true
[addresses]
translation_vector=0x015bf940
language_vector=0x015bf928
creature_vector=0x0157e5ec
dwarf_race_index=0x01565f60
squad_vector=0x015bc4f4
current_year=0x01563a20
[offsets]
word_table=0x001C
[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024
[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0158
current_job=0x0284
turn_count=0x052b
states=0x0
souls=0x05f8
labors=0x0614
happiness=0x06a4
squad_ref_id=0x0708
[soul_details]
skills=0x01D4
traits=0x01EC
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x000C
members=0x0044
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
7)Change the "Name & Extension" field to "v0.34.07.ini". It might ask you to confirm, choose yes if it does.
8)Move the file into Contents/MacOS/etc/memory_layouts/osx
9)Close the window and open up DT.
Feature request: Dump a png file with whatever is currently displayed in the current Grid Layout. We can make nice pictures for Let's plays, but it takes some editing with a graphic program. This feature would make that instantaneous.
Next feature request: Have a "group by" dropdown menu entry for "Highest moodable skill". Would be useful when trying to make sure my peasants end up mooding candy cane sticks rather than another ☼Lignite Left Sock☼
Feature request: Dump a png file with whatever is currently displayed in the current Grid Layout. We can make nice pictures for Let's plays, but it takes some editing with a graphic program. This feature would make that instantaneous.
Should be easy as pie:
With DT active press ALT+Print screen
Switch to your program of choice(use IrfanView, as it's the best! ;p ) press CTRL+V
Press CTRL+S and give it a name and where you want to save it, choosing PNG as the filetype.
Profit!
Next feature request: Have a "group by" dropdown menu entry for "Highest moodable skill". Would be useful when trying to make sure my peasants end up mooding candy cane sticks rather than another ☼Lignite Left Sock☼
How about making a custom grid layout with "moodable skills", then sorting it by "sum of skills", would this work?Feature request: Dump a png file with whatever is currently displayed in the current Grid Layout. We can make nice pictures for Let's plays, but it takes some editing with a graphic program. This feature would make that instantaneous.
Should be easy as pie:
With DT active press ALT+Print screen
Switch to your program of choice(use IrfanView, as it's the best! ;p ) press CTRL+V
Press CTRL+S and give it a name and where you want to save it, choosing PNG as the filetype.
Profit!
Your method doesn't work, and you offend me by suggesting I didn't know about making several print screens and glueing them together in a graphics program. About the only difference <ALT+Print screen> makes, is that under Gnome I get a dump of current program window, and under Windows XP the whole screen (which is the same as using print screen). My feature request was about not needing to edit several print screens to get a nice dump like this:
@Maklak - with gnome i think you can do things similar to vista's snipping tool via gnome-screenshot --interactive, otherwise perhaps try shutter?
Next feature request: Have a "group by" dropdown menu entry for "Highest moodable skill". Would be useful when trying to make sure my peasants end up mooding candy cane sticks rather than another ☼Lignite Left Sock☼
How about making a custom grid layout with "moodable skills", then sorting it by "sum of skills", would this work?
As a layout user I've a new smallish pet peeve: please try to state the os your layout targets, it's getting very hard to find the right one using the search function.
Anyone have 34.07 Linux memory layouts for the splinterz build?QuoteAs a layout user I've a new smallish pet peeve: please try to state the os your layout targets, it's getting very hard to find the right one using the search function.
This. Sadly it seems splinterz doesn't include Linux layouts in recent versions of the git tree. But I'm a diehard for this fork of DT. This alone is what's keeping me in 34.06.
What I need is [...] a desktop with resolution approaching 2500 x 3000 pixels, where I could maximize DT and see everything at once.
<(Alt +) Print Screen> (which works under Gnome, but works as normal Print Screen under Windows),
Anyone have 34.07 Linux memory layouts for the splinterz build?
sorry about that. i just don't feel i should be including linux/osx layouts if i can't test them. :-\ if anyone wants to pm me layouts they know work i have no qualms bundling them in!
Hi,What OS are you running? If you are on mac then there is a bug where DT will sometimes not read new immigrant skill levels correctly. Just restart DT and it will fix that. If you aren't then I don't know what the problem is.
seems I have a problem with DT, I'm using 34.07 DF version, I did update the .ini file etc. according to instructions written earlier, though somethings wrong: I can't see my dwarves' skills. All of my guys have zero experience in everything according to the grid. Seems that DT fails to read skill attributes.
Any idea how to fix this?
Update 1:
Oh, and it seems that moods aren't right either.
Have you updated your checksums? I'm not sure if the latest download has the right ones or not.
You can find the values here (http://www.bay12forums.com/smf/index.php?topic=66525.msg3146407#msg3146407) with pictures on how to do it here (http://www.bay12forums.com/smf/index.php?topic=66525.1680).
I think i found a bug in DT regarding migration wave sorting.
i.e. migration wave of 10 arrives, in DT as one wave of 10 dwarfs, save-quit-load game, reread dwarfs in DT and that very wave of 10 appears as 4 separate waves of 3, 3, 3 and 1 dwarfs. Is that really a bug or i don't know something? OS is Gentoo linux x64, DT build from sources.
I think i found a bug in DT regarding migration wave sorting.
i.e. migration wave of 10 arrives, in DT as one wave of 10 dwarfs, save-quit-load game, reread dwarfs in DT and that very wave of 10 appears as 4 separate waves of 3, 3, 3 and 1 dwarfs. Is that really a bug or i don't know something? OS is Gentoo linux x64, DT build from sources.
I have a bug to report. Some entities show in DF as pseudo-dwarves but are not. They almost never have names but sometime can, and all their stats are at -1 (or 0, anyway they show as red diamonds). I play in an evil biome, so this can be either ghosts or zombies.
I think it would be fairly easy to not display them, there is no Dorf who can be alive with all stats at -1 I believe (or perhaps one chance in 100 millions!), so if you see such creature, don't display it.
Steps for OSX
1) Download latest version of DT.
2)Ctrl+click on DT and choose "Show package contents"
3)Go to Contents/MacOS/etc/memory_layouts/osx
4)Open up text edit
5)Paste this into a new text documentCode: [Select][info]
6)Save the file and ctrl+click on it and choose "Get info"
checksum=0x20d42b0f
version_name=v0.34.07
complete=true
[addresses]
translation_vector=0x015bf940
language_vector=0x015bf928
creature_vector=0x0157e5ec
dwarf_race_index=0x01565f60
squad_vector=0x015bc4f4
current_year=0x01563a20
[offsets]
word_table=0x001C
[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024
[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0158
current_job=0x0284
turn_count=0x052b
states=0x0
souls=0x05f8
labors=0x0614
happiness=0x06a4
squad_ref_id=0x0708
[soul_details]
skills=0x01D4
traits=0x01EC
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x000C
members=0x0044
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
7)Change the "Name & Extension" field to "v0.34.07.ini". It might ask you to confirm, choose yes if it does.
8)Move the file into Contents/MacOS/etc/memory_layouts/osx
9)Close the window and open up DT.
On a questioning side, does the vanilla DT show vampires? I've been having some dwarves show up recently that don't appear in DT, but they still get hungry so I'm not sure if it's just DT glitching out or not. They also all seem to show up with mostly yellow body parts and at least one body part missing, be it an ear or a tooth.
Excuse me, sorry to be a complete idiot, but how do i manualy update the 34.06 version to work with 34.07, or atleast were i can find instructions on how to? Iv heard people talking about it, but im an idiot.
Again, im sorry if i seem like a total idiot, but i really am unable to play DF without it. Thanks, and please dont eat me.
Follow the four steps in the image belowSpoiler (click to show/hide)
I'm using the newest DF and newest DT with the LOFR IRONHAND versionI dunno what LOFR is but I am running DF with the lazy noob pack and using ironhand's interface. Dwarf therapist will not work.
I know the LOFR creator said it was compatible so i'm wondering if its ironhand's doing
Excuse me, sorry to be a complete idiot, but how do i manualy update the 34.06 version to work with 34.07, or atleast were i can find instructions on how to? Iv heard people talking about it, but im an idiot.
Again, im sorry if i seem like a total idiot, but i really am unable to play DF without it. Thanks, and please dont eat me.
Steps for OSXOn a questioning side, does the vanilla DT show vampires? I've been having some dwarves show up recently that don't appear in DT, but they still get hungry so I'm not sure if it's just DT glitching out or not. They also all seem to show up with mostly yellow body parts and at least one body part missing, be it an ear or a tooth.
1) Download latest version of DT.
2)Ctrl+click on DT and choose "Show package contents"
3)Go to Contents/MacOS/etc/memory_layouts/osx
4)Open up text edit
5)Paste this into a new text documentCode: [Select][info]
6)Save the file and ctrl+click on it and choose "Get info"
checksum=0x20d42b0f
version_name=v0.34.07
complete=true
[addresses]
translation_vector=0x015bf940
language_vector=0x015bf928
creature_vector=0x0157e5ec
dwarf_race_index=0x01565f60
squad_vector=0x015bc4f4
current_year=0x01563a20
[offsets]
word_table=0x001C
[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024
[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0158
current_job=0x0284
turn_count=0x052b
states=0x0
souls=0x05f8
labors=0x0614
happiness=0x06a4
squad_ref_id=0x0708
[soul_details]
skills=0x01D4
traits=0x01EC
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x000C
members=0x0044
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
7)Change the "Name & Extension" field to "v0.34.07.ini". It might ask you to confirm, choose yes if it does.
8)Move the file into Contents/MacOS/etc/memory_layouts/osx
9)Close the window and open up DT.
No one can help me it seems.
Or if you are on OSXSteps for OSX
Thank You!
I have a bug to report. Some entities show in DF as pseudo-dwarves but are not. They almost never have names but sometime can, and all their stats are at -1 (or 0, anyway they show as red diamonds). I play in an evil biome, so this can be either ghosts or zombies.
I think it would be fairly easy to not display them, there is no Dorf who can be alive with all stats at -1 I believe (or perhaps one chance in 100 millions!), so if you see such creature, don't display it.
if this is occurring in my branch i'd appreciate the save to take a more detailed look.
I have a bug to report. Some entities show in DF as pseudo-dwarves but are not. They almost never have names but sometime can, and all their stats are at -1 (or 0, anyway they show as red diamonds). I play in an evil biome, so this can be either ghosts or zombies.
I think it would be fairly easy to not display them, there is no Dorf who can be alive with all stats at -1 I believe (or perhaps one chance in 100 millions!), so if you see such creature, don't display it.
if this is occurring in my branch i'd appreciate the save to take a more detailed look.
I'm using DF for 34.07 taken from archive named dfhack-0.34.05-r1-Windows.zip, is it your branch?
I'm also playing with LFR mod. Do you want the save?
I downloaded from your branch and there is the bug, now 33 pseudo dwarves show.
This is with LFR mod, current version.
http://www.mediafire.com/?e763g9sm9kcxe60
http://i.imgur.com/3LdpU.png
There's my Dwarf Therapist screen at this time. Neither the names nor the dwarfs or labors they have activated are showing. I've tried re-installing it multiple times and with multiple versions of DF and DT and this keeps happening. It didn't always do this when I first installed DT it was working perfectly, but when I turned it on later it wasn't working properly. If anyone has a clue as to what else I should try I'd appreciate it.
DF Version: 0.34.06 DT Version: 0.6.12b04 Mac Version: 10.7.2
Edit: Actually the DF version is 0.34.05 as Kingubu pointed out.
Can someone post a link to splinterz repository, please?Going just one page back yields a download link: http://www.bay12forums.com/smf/index.php?topic=66525.msg3174037;topicseen#msg3174037
Thanks for help :3Can someone post a link to splinterz repository, please?Going just one page back yields a download link: http://www.bay12forums.com/smf/index.php?topic=66525.msg3174037;topicseen#msg3174037
Assuming you don't want the download and you want a source code repository, I simply clicked on his profile, selected Show Posts...
Found on page 2: http://code.google.com/r/splintermind-attributes/source/browse/#hg%2Fetc%2Fmemory_layouts%2Fwindows
So one could deduce that the repository is located here:
http://code.google.com/r/splintermind-attributes/
(Which is also on page 5 of his post history.)
Is there any estimated release date for a 34.07 version of Dwarf Therapist?
Is there any estimated release date for a 34.07 version of Dwarf Therapist?
err like minus 1.5 weeks ago...
splinterz version issue report
Adventure Trait is glitched. For the raw skill value, some dwarves have negative numbers. Others have normal in range numbers. Incorrect memory offset?
Vampire Names are mismatched. The dwarf alias that the vampire is using doesn't show up in DT. I think DT is using his real name?
Failure to pick up tools. This was reported earlier by someone else. In the early days of my fort I assigned miners, but had no pickaxes. Later on I made pickaxes, but the dwarves assigned to the mining task (via DT) didn't go and pick them up. Unassigning them in DF and reassigning them in DF made them go get pickaxes. Unassigning them in DT and reassigning them in DT did not. Although I didn't check what would happen if I waited a while before reassignment.
Nonexisting dwarves: DT reports more dwarves than I have. Possibly due to kidnapping?
Migrant wave ordering: My dwarves no longer show up in the correct Migrant waves. Possibly because some are historical figures? I don't know.
Feature Requests
With today's new dwarven lifestyle 33% of the dwarves in my fort are babies & children. Can you make the dwarf count in DF report Adults/Babies/Children?
These might actually be necromancer dwarves, who remain hidden until discovery, sorta like ambushers. Are you near a Tower and do you get the occasional "The dead walk" message or somesuch? If yes, thats your extra dorf right there.Nonexisting dwarves: DT reports more dwarves than I have. Possibly due to kidnapping?- i'm making progress on the kidnapping, but there's no real way to identify them via flags. the 'rider' flag appears to be unchecked for kidnapped babies, but it's also removed if a parent drops a baby. so DT won't show kidnapped babies, but it also won't show babies rolling around on the floor. best i can do so far.
These might actually be necromancer dwarves, who remain hidden until discovery, sorta like ambushers. Are you near a Tower and do you get the occasional "The dead walk" message or somesuch? If yes, thats your extra dorf right there.Nonexisting dwarves: DT reports more dwarves than I have. Possibly due to kidnapping?- i'm making progress on the kidnapping, but there's no real way to identify them via flags. the 'rider' flag appears to be unchecked for kidnapped babies, but it's also removed if a parent drops a baby. so DT won't show kidnapped babies, but it also won't show babies rolling around on the floor. best i can do so far.
Yeah 1st page isn't the best place to look atm ;p browse back through recent pages and you'll find all that you need :) i think the latest LNP has DT for 34.07 too.
Hey that's my save! :D And I did not found the baby either.
I've got a problem with another version of Therapist... I think it was 0.6.12, with caste support, I don't remember where did I get it from exactly.
Any way, after a syndrome added some text to a creature name ("vault dweller infected"), they stopped appearing in the list, even after cured. Was it ever fixed for the latest versions?
Splinterz, any ETA on your branch which can efficiently remove ghosts/zombies/fake dwarves? I have just too many detected by DT in my game (evil biome)
Zeroing a dwarf skill is a possibility you envision or this is a no-no? Please I beg you, Master :P
alright so i've got another version packaged up full of shinies! there are a lot of changes so i'll just highlight the main points here, and you can read the rest on the download/source page!
...
as always please let me know of any problems, feature requests, or just general feedback you may have! enjoy!
WARNING: Failure to find: ui/roledialog.h
from qmake, and it won't build with or without that dependency.
give it another go now vityav, i'm not sure why it wasn't picking up roledialog.h so i've moved the files back into the main directories and updated the source files
Hi Splinterz,
Thank you very much for your work. The new DT works rather well!
A few remarks:
I have now a ton of dwarves listed which are in fact missing dwarves (most, if not all, of them dead).
Waves are still indicated even if there is no one alive in it
Roles calculation should be optional. Some won't use it, or only rarely, but it is twice as slow as the reading of dwarves, making a x3 refresh time overall.
Anyone else having trouble getting migration waves to work on the latest splinter build? (Linux 64-bit) It lumps everyone into wave 0.
Anyone else having trouble getting migration waves to work on the latest splinter build? (Linux 64-bit) It lumps everyone into wave 0.
are you actually typing NOT strength for the attribute? if you are, you need to do -strength instead. just the negative sign is needed to value aspects inversely, NOT is just how it displays it in the tooltip.
Yep, freshly downloaded only 3 or 4 hours ago.
Edit: And i'll add, that the 2nd bug i mentioned above about the role box coming up unpopulated, it seems to happen after a certain amount of time? as i can go away for a few mins, come back and it's gone wonky again even without me using it. ie this current session it's just gone again, and all i was doing was had the animals tab open, and was looking for stuff to butcher ingame and thought i'd check to see if i could still edit the last role i made but nope a blank box again.
I noticed that squads weren't being sorted. I created a new squad(fresh embark) and Dwarf Therapist had the 2 soldiers bolded, but they were under the NoSquad (7) instead of the name of the squad, like the older versions. I haven't tried the one you just posted today, is it fixed?
finally i've started adding in some new animal stuff (trained level in the name, not hiding children, hiding hostile/wild animals) so we'll see how that goes...to hide hostile/wild animals you can filter the civilization id adding in the layout (for the windows version):
I noticed that squads weren't being sorted. I created a new squad(fresh embark) and Dwarf Therapist had the 2 soldiers bolded, but they were under the NoSquad (7) instead of the name of the squad, like the older versions. I haven't tried the one you just posted today, is it fixed?
no i hadn't noticed that, but it's fixed now :-\
I've build both vanilla DT and splinterz's branch from source, then copied the layout for 34.06 from vanilla to splinterz's version, since it doesn't have one by default. My fort have 10 dwarves, and vanilla shows all of them, but the splinterz's DT shows only 8 - all 3 migrants, bun only 5 of starting 7. Am I doing something wrong here, or is this a bug?The splinterz's version layout has a few more offsets. For linux they should be (the sex offset is different from the one in the vanilla DT):
[dwarf_offsets]
flags3=0x0094
sex=0x00a6
mood=0x01a0
caste=0x00a4
curse=0x4d4
body_size=0x410
animal_type=0xb0
[soul_details]
mental_attrs=0x0068
[invalid_flags_3]
size=1
1\name=a ghost
1\value=0x00001000
The mining, wood cutting, and hunting labors require the dwarf to either pick up and wield a pick, battle axe, or crossbow. For this reason, a dwarf cannot be assigned to any combination of mining, wood cutting, or hunting at the same time.
1/name = Mining
1/id = 0
1/skill = 0
1/requires_equipment = true
1/excludes/size=2
1/excludes/1/labor_id = 10
1/excludes/2/labor_id = 44
4/name = Wood Cutting
4/id = 10
4/skill = 1
4/requires_equipment = true
4/excludes/size=2
4/excludes/1/labor_id = 0
4/excludes/2/labor_id = 44
9/name = Hunting
9/id = 44
9/skill = 57
9/requires_equipment = true
9/excludes/size=2
9/excludes/1/labor_id = 0
9/excludes/2/labor_id = 10
I compiled and ran DT on kubuntu windows, but there are some problems:(solved)
1) I can't click to toggle labors. I can however right click to get a menu to toggle the whole group.
2) I can't change the nicknames of dwarves.
I know these things work on the windows version. Anybody have any clue what's up?
I got DT running on ubuntu, and no, there is no nickname option. Bug or unimplemented, I don't know.
#ifndef Q_WS_X11
m.addAction(tr("Set Nickname..."), this, SLOT(set_nickname()));
m.addSeparator();
#endif
that make the "Set nickname" option unavailable to linux users. I don't know why it is this way and don't have a linux machine available right now to check it.Because gcc stores strings as a pointer, while MSVC stores them as a length plus a union of 16 bytes of storage and a pointer. This means that on Linux, to store a string requires doing memory allocation (which DT cannot do; it cannot call malloc as it is not in-process), but on Windows short strings (up to 15 bytes) can be forced into the union. (Note that if there is already a value and it is longer than 15 bytes, forcibly changing it to a short string will cause memory to leak. But as DF already leaks memory like a sieve anyway, it's unlikely anyone will notice.)
There is anyone who knows why this option is disabled in linux or willing to try to compile the DT code without the ifndef lines?
Greetings, fellow beard-bearers,Has anyone come up with a solution to the custom races issue? I seem to remember this being rather easy but having not played for a while I do not remember how to address this.
I've got a Problem that dont seem to be able to solve by myself:
After another crash which killed my save including my entire world, i decidedto set up some mods to my game, or to be more specific the Fortress Defense mod and the Termitefolk Colony mod (http://www.bay12forums.com/smf/index.php?topic=91853.0).
Since i've always been using Dwarf Therapist, pretty much al the time since i started playing DF, i looked in this thread to see if there was any way to get castes to work. I downloaded the DwafTherapistClone.
Now here's the Problem: It doesnt seem to recognize any of the Termite castes, i guess that's because the game_data.ini only contains the race-index for the dwarven race. Now what would i have to do to find the race index for those termites, or any other custom-made race? I've had some difficulties there, since i've only got very rough to no knowledge about searching memories, and similar things. Only having access to a 6-year-old laptop which was originally designed to be just a terminal-pc doesnt really help either.
Can anyone of you help me with this issue?
No idea where you found this but it works BRILLIANTLY. Thanks a lot!I've made it myself. Happy to hear that it works well.
snip
Just started playing around and made a custom role, but for some reason it doesn't show up in my 'Roles' tab...
snip
Just started playing around and made a custom role, but for some reason it doesn't show up in my 'Roles' tab...
glad you're enjoying it :) the only way to have a custom role show up in the default roles tab is to name it the same as an existing default role (it will override the default). otherwise you'll have to create a custom view, and add your custom role columns to it. from what you're describing, the easiest way would probably be to copy the default 'roles' view, and then add your newly created custom roles to it.
on a side note i'm working on getting the changes Shishimar sent me/posted for castes and races, as well as the corrected trait stuff for the next release.
wait for somebody to realize that connecting to DFhack makes upgrading a lot less an issue of shotting around in the dark. ;)
Actually they generally take the same amount of time.
Has anybody tried using the current DT with DF 0.34.08? Limited functionality or no function?Won't work; the offsets will be all wrong.
Seriously, every time?
Seriously, every time?Yup. At least until Toady starts publishing the symbol tables. (Please?)
wait for somebody to realize that connecting to DFhack makes upgrading a lot less an issue of shotting around in the dark. ;)
Actually they generally take the same amount of time.
Because it runs so well on macs?
:P
warning: the debug information found in "/usr/lib/debug//usr/lib/libxml2.so.2.7.8" does not match "/usr/lib/libxml2.so.2" (CRC mismatch).
warning: the debug information found in "/usr/lib/debug/usr/lib/libxml2.so.2.7.8" does not match "/usr/lib/libxml2.so.2" (CRC mismatch).
There is a new vehicle hauling labor missing from DT that I don't think can be corrected with an ini upgrade.Jobs 227 through 230 are Carve Track, Push Track Vehicle, Place Track Vehicle, and Store Item in Vehicle, respectively. Adding these to the appropriate place in game_data.ini should be enough to resolve that. (My copy of game_data.ini has wrong values for a lot of the jobs, but I've never bothered to fix this.)
There is a new vehicle hauling labor missing from DT that I don't think can be corrected with an ini upgrade.
74/name = Push/Haul Vehicles
74/id = 73
74/skill = -1
Linux user here.
After wave 3, DwarfTherapist stopped being able to change professions, not sure what happened. The changes don't happen even though Therapist is showing they did.
If you compile your version of DT you can add the column directly to the default gridview changing the default_gridviews.dtg:
find these lines
If you compile your version of DT you can add the column directly to the default gridview changing the default_gridviews.dtg:
find these lines
I compile mine, you mentioned a dtg file, but what .cpp or .h file do I need to change to add the labor?
If you compile your version of DT you can add the column directly to the default gridview changing the default_gridviews.dtg:
find these lines
I compile mine, you mentioned a dtg file, but what .cpp or .h file do I need to change to add the labor?
There is a new vehicle hauling labor missing from DT that I don't think can be corrected with an ini upgrade.
The new labor can be added modifiying the game_data.ini and adding a custom gridview based on the labors view.
In the game_data.ini paste these lines after the "Wax working" labor:Code: [Select]74/name = Push/Haul Vehicles
74/id = 73
74/skill = -1
then start DT and copy the "Labors" gridview, edit the new gridview and add the column of the new labor.
If you compile your version of DT you can add the column directly to the default gridview changing the default_gridviews.dtg:
find these linesSpoiler (click to show/hide)
and change them with these:Spoiler (click to show/hide)
Oh thank you, codedwarves, for making this tool available for us...
So much easier with this utility than without, just because it takes less keystrokes to arrange jobs
The new labor can be added modifiying the game_data.ini and adding a custom gridview based on the labors view.
In the game_data.ini paste these lines after the "Wax working" labor:Code: [Select]74/name = Push/Haul Vehicles
74/id = 73
74/skill = -1
then start DT and copy the "Labors" gridview, edit the new gridview and add the column of the new labor.
If you compile your version of DT you can add the column directly to the default gridview changing the default_gridviews.dtg:
find these linesSpoiler (click to show/hide)
and change them with these:Spoiler (click to show/hide)
I tried modifying the original dtg file, didn't get a push vehicle labororer
snip
what am I doing wrong. I don't see a labor (when I try to add one to my custom gridview) called Push anything, or Vehicle anything, or Haul anything. I do have Item Hauling (but that's a skill). Is that it?
That woulld have been nice to have in the instructions, does the array need to be adjusted in the dtg file as well?
3\sets\13\columns\11\width=43\sets\14\name=Other Jobs
3\sets\13\columns\11\width=4
3\sets\14\name=Other Jobs
Hey splinterz, I am using the version you just posted with the vehicle hauling labors added. Sorting by squad does nothing, just like last time.
i've updated the last build of my branched version to include the new labor columns in both default labor views, the new jobs, layout files for windows and the layout file for linux that was posted.Yeah, but where is linux build?
DOWNLOAD (http://code.google.com/r/splintermind-attributes/)
no source yet as i'm still in the process of merging other changes.
splinterz, your branch of DT crashes immediately after trying to open it with 0.34.09 (Windows 7, 32-bit).
splinterz, your branch of DT crashes immediately after trying to open it with 0.34.09 (Windows 7, 32-bit).
yeah that version will do that without proper layout files. it will be fixed in the upcoming release.
Did you really mean
creature_vector=0x01828998
or did you mean
creature_vector=0x01828988
DT tells me that my fort is not loaded using Shishimaru's info.Which version of DT are you using?
Is there a way to have DT display more skills? Like Organizer, Bookkeeper, and all the other administrative labors?It's there under social skills. Maybe you didn't find it since in uses record keeper skill?
I am tired of not having a definitive stock count and it would be much simpler to see who (if any) dorf has the highest Bookkeeper skill if DT actually showed that skill.
Is there a way to have DT display more skills? Like Organizer, Bookkeeper, and all the other administrative labors?
I am tired of not having a definitive stock count and it would be much simpler to see who (if any) dorf has the highest Bookkeeper skill if DT actually showed that skill.
I've done some quick calculations for the mac client and I think I have everything in order for v0.34.09.ini. Brief testing tells me these are probably good but I'm quite new to this and made a few assumptions based on other posts for the windows version, so tread carefully.I've been waiting for one that works with osX, so if noone else tries this today, I can confirm it after work, tonight.Spoiler (click to show/hide)
splinterz, can I somehow add animal attributes to the animals gridview? When I copy animals gridview and add attributes - it starts to display dwarves instead of dogs :(
Same problem as above. Is their a place I can go to get step by step directions on how to update to 0.34.09? Thanks.Download DF 0.34.09 or your favorite graphic pack prepacked version
v0.34.09 Layouts Updated:P!!!!!!
Layouts are posted for all 3 operating systems and should download automatically.
Note, this is for vanilla Dwarf Therapist only, see post above for splinterz' release.
Direct Download Links:
- Windows (Graphics) v0.34.09 (http://www.dwarftherapist.com/memory_layouts/windows/v0.34.09_graphics.ini)
- Windows (Legacy) v0.34.09 (http://www.dwarftherapist.com/memory_layouts/windows/v0.34.09_legacy.ini)
- Linux v0.34.09 (http://www.dwarftherapist.com/memory_layouts/linux/v0.34.09.ini)
- Mac OSX v0.34.09 (http://www.dwarftherapist.com/memory_layouts/osx/v0.34.09.ini)
Will work on a new release with the new skill(s) added to the grid layout & labor updates for next week.
Is there a way to have DT display more skills? Like Organizer, Bookkeeper, and all the other administrative labors?It's there under social skills. Maybe you didn't find it since in uses record keeper skill?
I am tired of not having a definitive stock count and it would be much simpler to see who (if any) dorf has the highest Bookkeeper skill if DT actually showed that skill.
splinterz, what does lawdwarf (weak) mean in the profession affinity? is it a sheriff?
Linux: DT refuses to connect whenever migrants come, presumably because of the problem ag outlined above. Anyone else having this problem on linux?
Linux: DT refuses to connect whenever migrants come, presumably because of the problem ag outlined above. Anyone else having this problem on linux?
Same issue here.
try changing squad_ref_id=0x070c to squad_ref_id=0x08c4 and see if that works (for linux 34.09 vanilla DT)
try changing squad_ref_id=0x070c to squad_ref_id=0x08c4 and see if that works (for linux 34.09 vanilla DT)
*facepalm*
May I ask what may be the purpose of using a windows offset in linux? That offset is 20 bytes bigger than the whole length of the unit structure there.
The reason stuff breaks once the unit set changes is almost certainly that the 'vanilla' offsets use the unit vector that is only used during game loading or saving, and ceases to be updated after that.
Specifically, this is the correct value, and not what is in those offsets:
- creature_vector=0x096789cc
obviously i wasn't referencing the proper offsets. hardly worth ridiculing me over.
obviously i wasn't referencing the proper offsets. hardly worth ridiculing me over.
Yeah, sorry for the extreme reaction, but, having already posted the correct value two days ago, this whole situation was a bit too much for me. ;)
There doesn't appear to be a "Push/Haul Vehicle" labor tab.http://www.bay12forums.com/smf/index.php?topic=66525.msg3284854#msg3284854 (http://www.bay12forums.com/smf/index.php?topic=66525.msg3284854#msg3284854)
Is there a way to add it? Or will the program need to be updated?
There doesn't appear to be a "Push/Haul Vehicle" labor tab.http://www.bay12forums.com/smf/index.php?topic=66525.msg3284854#msg3284854 (http://www.bay12forums.com/smf/index.php?topic=66525.msg3284854#msg3284854)
Is there a way to add it? Or will the program need to be updated?
You may need to update the layouts
The windows layout for DF 34.10 seems to be identical to the layouts for 34.09
there's also some delay on the initial load for the reactions and caste data and if you find it unbearable speak up and i'll see what i can do.
there's also some delay on the initial load for the reactions and caste data and if you find it unbearable speak up and i'll see what i can do.
Re performance, I see that on linux it still reopens the memory file every time it tries to read a few bytes.
See this patch from last year:
http://code.google.com/p/dwarftherapist/issues/attachmentText?id=175&aid=5269343667341637806&name=linux-performance.patch&token=TCejWaHb-AhytBPAVzvB1w2roLE%3A1337453272258 (http://code.google.com/p/dwarftherapist/issues/attachmentText?id=175&aid=5269343667341637806&name=linux-performance.patch&token=TCejWaHb-AhytBPAVzvB1w2roLE%3A1337453272258)
In case you weren't aware, ag is the one who wrote all of those patches ("ag" == "angavrilov").there's also some delay on the initial load for the reactions and caste data and if you find it unbearable speak up and i'll see what i can do.
Re performance, I see that on linux it still reopens the memory file every time it tries to read a few bytes.
See this patch from last year:
http://code.google.com/p/dwarftherapist/issues/attachmentText?id=175&aid=5269343667341637806&name=linux-performance.patch&token=TCejWaHb-AhytBPAVzvB1w2roLE%3A1337453272258 (http://code.google.com/p/dwarftherapist/issues/attachmentText?id=175&aid=5269343667341637806&name=linux-performance.patch&token=TCejWaHb-AhytBPAVzvB1w2roLE%3A1337453272258)
nice find. have you happened to try the nickname patch posted in the same topic?
Lately (with the new minecart versions) I tend to test features on small forts that are only meent to last a year or two. To get good production speeds with a small number of dwarves, I'm using a socialist work scheme (everyone does everything)
The problem is that to do this, I still need to group the dwarves by sex (makes only 2 groups), and check every job twice(once for each sex)... now thats still a lot of clicking
my question is, is it possible to enable all jobs for everyone (except mining/woodcuting obviusly) with as few clicks as possible? preferably one?
I dont know if it would be a very much used feature, but its worth it when you only want to test some cart mechanics and want a track carved/constructed real fast...
my question is, is it possible to enable all jobs for everyone (except mining/woodcuting obviusly) with as few clicks as possible? preferably one?For the record, I made this same suggestion (http://code.google.com/p/dwarftherapist/issues/detail?id=283) over a year and a half ago.
For the record, I made this same suggestion (http://code.google.com/p/dwarftherapist/issues/detail?id=283) over a year and a half ago.GO SOCIALIST BUTTON:D
great, I have to try it:)The last Splinterz version already have the layout for .10
only we just got the vanila .10
now im shaking and waiting for therapist compatible with .10
great, I have to try it:)
only we just got the vanila .10
now im shaking and waiting for therapist compatible with .10
dwarf withdrawl syndrome....
The layout for DF 34.10 seems to be identical to the layouts for 34.09
copy and paste the layout for 0.34.09 (in the "DwarfTherapist\etc\memory_layouts\windows" folder) then change these lines:Spoiler (click to show/hide)
with theseSpoiler (click to show/hide)
seems so easy its almost a crime to ask:
Change the line in which file Theres probably around twenty here
[info]
checksum=0x4fba073a
version_name=v0.34.10 (graphics)
complete=true
Hey splinterz, I have a bug report. I'm using your new version. When i click on the column heading to sort by skill level, some skills don't do anything. The ones I notice are:
Crossbow Making
Hunting
Trapping
Small Animal Dissection
Dyeing
Wood burning
Cheese Maker
Milker
Shearer
Spinner
Fish Cleaner
Fish Dissection
Clothes Making
Pottery
Glazing
Wax working
Siege Engineering
It seems like the one thing these all have in common is they don't have an associated role in the Role tab.
seems so easy its almost a crime to ask:
Change the line in which file Theres probably around twenty here
1. copy the file "v0.34.09_graphics.ini" in the (in the "DwarfTherapist\etc\memory_layouts\windows" folder)
2. paste it in the same folder
3. rename this new file as "v0.34.10_graphics.ini"
4. open the file "v0.34.10_graphics.ini" and change the first lines with these:Code: [Select][info]
checksum=0x4fba073a
version_name=v0.34.10 (graphics)
complete=true
Hrm. Maybe I'm going blind, but I can't seem to find Swimmer skill in the list.
I'm trying to dig through an aquifer and that skill is somewhat important here :)
seems so easy its almost a crime to ask:
Change the line in which file Theres probably around twenty here
1. copy the file "v0.34.09_graphics.ini" in the (in the "DwarfTherapist\etc\memory_layouts\windows" folder)
2. paste it in the same folder
3. rename this new file as "v0.34.10_graphics.ini"
4. open the file "v0.34.10_graphics.ini" and change the first lines with these:Code: [Select][info]
checksum=0x4fba073a
version_name=v0.34.10 (graphics)
complete=true
I did this and uploaded Dwarf Therapist for 34.10 (http://dffd.wimbli.com/file.php?id=6064) to DFFD, for anyone that wants to avoid the hassle of downloading DF 34.09 just to get the config auto-update to edit it to 34.10. It's easy enough to edit 34.09 to work for 34.10, but apparently you can't get the 34.09 config to start with unless you auto-update with the appropriate (now outdated) DF version running? I feel like I'm missing the easy way to update :P
Hrm. Maybe I'm going blind, but I can't seem to find Swimmer skill in the list.
I'm trying to dig through an aquifer and that skill is somewhat important here :)
There has never been swimming skill in the time I've been playing. Someone smarter than me should fix that.
the swimming skill isn't on any of the default views, but it's there. you can add it to any custom view you create.
Splinterz i got a question. I tried yout DT and i have a question about traits used for labor assistant. Some of my dwarfes got 17% for fighting roles but they got all attributes to 5000 and all skills to 16 and all traits changed to suit my needs. For example they are incredibly calm and never rage. But DT says that they got only 17% affinity for fighting role O_O and for nursing too though they are fullfilled by helping others. What can cause this?
Why can't it be in the military page, right next to crutch walker?
have you happened to try the nickname patch posted in the same topic?
have you happened to try the nickname patch posted in the same topic?
Re this: I did write it for the vanilla v0.31.25 dwarf therapist, and used my own build with it until v0.34 came out without any noted problems. It might need re-merging now though, if any related code was changed. It also doesn't address the true complexity of setting a nickname properly: :)
https://github.com/angavrilov/dfhack/blob/f37f708b37bf21ded2ca99fac6db3facd7a05fcf/library/modules/Units.cpp#L554 (https://github.com/angavrilov/dfhack/blob/f37f708b37bf21ded2ca99fac6db3facd7a05fcf/library/modules/Units.cpp#L554)
I'm trying to get Splinter'z build (revision 5f2c8d1b9f2b) running on Linux. It connects to DF and starts loading reactions, then races and classes, and when it tries to load dwarves, it pops up the "Unable to talk to DF" dialog. Meantime, vanilla DT works fine.Which version of DF are you using?
I'm trying to get Splinter'z build (revision 5f2c8d1b9f2b) running on Linux. It connects to DF and starts loading reactions, then races and classes, and when it tries to load dwarves, it pops up the "Unable to talk to DF" dialog. Meantime, vanilla DT works fine.Which version of DF are you using?
2012-May-22 14:44:02.869 DEBUG core Connection to DF version "v0.34.10" established. [src/mainwindow.cpp:301] (connect_to_df)
2012-May-22 14:44:02.928 DEBUG core Loading language translation tables [src/languages.cpp:53] (load_data)
2012-May-22 14:44:02.930 DEBUG core Loading generic strings from 96bb130 [src/languages.cpp:66] (load_data)
2012-May-22 14:44:02.934 DEBUG core generic words 2173 [src/languages.cpp:68] (load_data)
2012-May-22 14:44:06.322 INFO core Reading reactions names... [src/dfinstance.cpp:295] (load_game_data)
2012-May-22 14:44:07.571 INFO core Reading races and castes... [src/dfinstance.cpp:316] (load_game_data)
2012-May-22 14:44:10.320 INFO core Reading some game raws... [src/dfinstance.cpp:279] (read_raws)
2012-May-22 14:44:10.331 DEBUG core Reading from file: "/home/uggi/df_linux_34_10/raw/objects/item_weapon.txt" [src/raws/rawreader.cpp:219] (read_weapons)
2012-May-22 14:44:10.417 INFO core Loaded 8 views from disk [src/viewmanager.cpp:133] (reload_views)
2012-May-22 14:44:10.517 DEBUG core loading creatures from "0x09679db8" "0x09679db8" (UNCORRECTED) [src/dfinstance.cpp:379] (load_dwarves)
2012-May-22 14:44:10.518 DEBUG core dwarf race index "0x09661640" "0x09661640" (UNCORRECTED) [src/dfinstance.cpp:381] (load_dwarves)
2012-May-22 14:44:10.518 DEBUG core current year "0x0965f140" "0x0965f140" (UNCORRECTED) [src/dfinstance.cpp:383] (load_dwarves)
2012-May-22 14:44:10.518 DEBUG core civilization id: "0x0000000a" [src/dfinstance.cpp:389] (load_dwarves)
2012-May-22 14:44:10.518 DEBUG core dwarf race: "0x000001d1" [src/dfinstance.cpp:393] (load_dwarves)
2012-May-22 14:44:10.518 DEBUG core current year: 100 [src/dfinstance.cpp:396] (load_dwarves)
2012-May-22 14:44:10.519 WARNING core vector at "0x09679da8" has over 5000 entries! ( 40448574 ) [src/dfinstancelinux.cpp:66] (enumerate_vector)
2012-May-22 14:44:11.918 WARNING core Tried to read 161794296 bytes but only got 112597240 [src/dfinstancelinux.cpp:87] (enumerate_vector)
2012-May-22 14:44:15.958 INFO core found 0 dwarves out of 0 creatures [src/dfinstance.cpp:440] (load_dwarves)
2012-May-22 14:44:15.959 WARNING core not connected [src/dfinstance.cpp:497] (load_squads)
2012-May-22 14:44:15.963 WARNING core lost connection to DF [src/mainwindow.cpp:335] (lost_df_connection)
2012-May-22 14:44:16.033 DEBUG core DFInstance baseclass virtual dtor! [src/dfinstance.cpp:120] (~DFInstance)
2012-May-22 14:44:25.756 INFO core Beginning shutdown [src/mainwindow.cpp:232] (closeEvent)
2012-May-22 14:44:25.756 DEBUG core beginning to write settings [src/mainwindow.cpp:208] (write_settings)
2012-May-22 14:44:25.757 DEBUG core finished writing settings [src/mainwindow.cpp:227] (write_settings)
2012-May-22 14:44:25.757 INFO core Closing Dwarf Therapist normally [src/mainwindow.cpp:238] (closeEvent)
Dwarf Race = 0x09661640 (uncorrected:0x09661640)
language_vector = 0x096bb130 (uncorrected:0x096bb130)
word_table = 0x0000001c
translation_vector = 0x096bb148 (uncorrected:0x096bb148)
Code: [Select]2012-May-22 14:44:10.517 DEBUG core loading creatures from "0x09679db8" "0x09679db8" (UNCORRECTED) [src/dfinstance.cpp:379] (load_dwarves)
...
2012-May-22 14:44:10.519 WARNING core vector at "0x09679da8" has over 5000 entries! ( 40448574 ) [src/dfinstancelinux.cpp:66] (enumerate_vector)
Code: [Select]2012-May-22 14:44:10.517 DEBUG core loading creatures from "0x09679db8" "0x09679db8" (UNCORRECTED) [src/dfinstance.cpp:379] (load_dwarves)
...
2012-May-22 14:44:10.519 WARNING core vector at "0x09679da8" has over 5000 entries! ( 40448574 ) [src/dfinstancelinux.cpp:66] (enumerate_vector)
The first offset is a correct address of the units.active vector of units on the map. The second one is junk.
VIRTADDR all_units = active_units - 0x10;
VIRTADDR all_units = active_units - 0xC;
#ifdef Q_WS_WIN
VIRTADDR all_units = active_units - 0x10;
#else
#ifdef Q_WS_MAC
VIRTADDR all_units = active_units - 0xC; <-- I don't know if this is the correct value for Mac
#else
#ifdef Q_WS_X11
VIRTADDR all_units = active_units - 0xC;
#endif
#endif
#endif
The relative offsets for the two vectors are different in linux and windows. That line actually should be:
The relative offsets for the two vectors are different in linux and windows. That line actually should be:
Actually, they should be two different offsets. ;)
@uggi: in the dfinstance.cpp file find the DFInstance::get_creatures() function and change this line
2012-May-22 14:44:10.518 DEBUG core current year: 100 [src/dfinstance.cpp:396] (load_dwarves)
2012-May-22 14:44:10.519 WARNING core vector at "0x09679da8" has over 5000 entries! ( 40448574 ) [src/dfinstancelinux.cpp:66] (enumerate_vector)
2012-May-22 14:44:11.918 WARNING core Tried to read 161794296 bytes but only got 112597240 [src/dfinstancelinux.cpp:87] (enumerate_vector)
2012-May-22 14:44:15.958 INFO core found 0 dwarves out of 0 creatures [src/dfinstance.cpp:440] (load_dwarves)
2012-May-22 14:44:15.959 WARNING core not connected [src/dfinstance.cpp:497] (load_squads)
2012-May-22 14:44:15.963 WARNING core lost connection to DF [src/mainwindow.cpp:335] (lost_df_connection)
2012-May-22 17:23:07.131 DEBUG core current year: 100 [src/dfinstance.cpp:396] (load_dwarves)
2012-May-22 17:23:07.744 INFO core found 0 dwarves out of 61 creatures [src/dfinstance.cpp:440] (load_dwarves)
2012-May-22 17:23:07.744 DEBUG core loading squads from "0x096b7cc0" "0x096b7cc0" (UNCORRECTED) [src/dfinstance.cpp:520] (load_squads)
2012-May-22 17:23:07.758 INFO core Found 1 squads out of 1 [src/dfinstance.cpp:545] (load_squads)
2012-May-22 17:23:07.763 WARNING core lost connection to DF [src/mainwindow.cpp:335] (lost_df_connection)
@uggi: in the dfinstance.cpp file find the DFInstance::get_creatures() function and change this line
Ok, changed that, compiled and tried again. Now instead of this:Code: [Select]2012-May-22 14:44:10.518 DEBUG core current year: 100 [src/dfinstance.cpp:396] (load_dwarves)
2012-May-22 14:44:10.519 WARNING core vector at "0x09679da8" has over 5000 entries! ( 40448574 ) [src/dfinstancelinux.cpp:66] (enumerate_vector)
2012-May-22 14:44:11.918 WARNING core Tried to read 161794296 bytes but only got 112597240 [src/dfinstancelinux.cpp:87] (enumerate_vector)
2012-May-22 14:44:15.958 INFO core found 0 dwarves out of 0 creatures [src/dfinstance.cpp:440] (load_dwarves)
2012-May-22 14:44:15.959 WARNING core not connected [src/dfinstance.cpp:497] (load_squads)
2012-May-22 14:44:15.963 WARNING core lost connection to DF [src/mainwindow.cpp:335] (lost_df_connection)
I now got this:Code: [Select]2012-May-22 17:23:07.131 DEBUG core current year: 100 [src/dfinstance.cpp:396] (load_dwarves)
2012-May-22 17:23:07.744 INFO core found 0 dwarves out of 61 creatures [src/dfinstance.cpp:440] (load_dwarves)
2012-May-22 17:23:07.744 DEBUG core loading squads from "0x096b7cc0" "0x096b7cc0" (UNCORRECTED) [src/dfinstance.cpp:520] (load_squads)
2012-May-22 17:23:07.758 INFO core Found 1 squads out of 1 [src/dfinstance.cpp:545] (load_squads)
2012-May-22 17:23:07.763 WARNING core lost connection to DF [src/mainwindow.cpp:335] (lost_df_connection)
So, it's a little better but still throwing the "Unable to talk to DF" dialog. I played around with the scan memory tool, getting the same results. Still can't find the creature vector, and trying to find the squad vector crashes DT. Here's the long crash report if needed:Spoiler (click to show/hide)
add these offsets in the [dwarf_offsets] section in your layout file (34.10):
civ=0x00b8
mood=0x01a0
caste=0x0a4
[info]
checksum=0x633f1fd3
version_name=v0.34.10
complete=false
[addresses]
translation_vector=0x01634a88
language_vector=0x01634a70
creature_vector=0x0
dwarf_race_index=0x0
squad_vector=0x0
current_year=0x01f5030c
...and so on...
okay, since i'm apparently retarded, how do i install splinterz version after compiling on linux? make install makes some noise about not being able to copy readme and copyright and stops there.Not sure that splinterz version has all the offsets you will need for linux, but you should be able to get it running by creating the directory structure described here (https://code.google.com/p/dwarftherapist/wiki/BuildingDwarfTherapist). (Basically it's a manual install step, make install doesn't have the instructions to do it)
also, how do i disable that ptrace limitation so i dont have to run DT as root?
$ echo 0 > /proc/sys/kernel/yama/ptrace_scope
…or make it permanent by setting ptrace_scope to 0 in /etc/sysctl.d/10-ptrace.conf
Thank you so very much :)okay, since i'm apparently retarded, how do i install splinterz version after compiling on linux? make install makes some noise about not being able to copy readme and copyright and stops there.Not sure that splinterz version has all the offsets you will need for linux, but you should be able to get it running by creating the directory structure described here (https://code.google.com/p/dwarftherapist/wiki/BuildingDwarfTherapist). (Basically it's a manual install step, make install doesn't have the instructions to do it)
also, how do i disable that ptrace limitation so i dont have to run DT as root?
As far as ptrace goes, this (https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#ptrace%20Protection) article covers it, but in summary:
Either do this (as root):Code: [Select]$ echo 0 > /proc/sys/kernel/yama/ptrace_scope
…or make it permanent by setting ptrace_scope to 0 in /etc/sysctl.d/10-ptrace.conf
okay, since i'm apparently retarded, how do i install splinterz version after compiling on linux? make install makes some noise about not being able to copy readme and copyright and stops there.
also, how do i disable that ptrace limitation so i dont have to run DT as root?
touch README COPYRIGHT; make INSTALL_ROOT=<wherever> install
Splinterz
have not found your stand alone forum here. However I would like to know where the customized role (created by adding new role in your version of DT) is saved in?
I wanted to reuse it with your newest update, rather than re-select information again.
R
splinterz
I looked in the created folder "dwarf therapist" that contains your version, and did not find the dwarf therapist.ini
Is this file saved elsewhere?
R
well, it works so far, with the occasional segfault when i click on a box to tick a job enabled or not, or if i manage to click between two blocks sometimes.okay, since i'm apparently retarded, how do i install splinterz version after compiling on linux? make install makes some noise about not being able to copy readme and copyright and stops there.Not sure that splinterz version has all the offsets you will need for linux, but you should be able to get it running by creating the directory structure described here (https://code.google.com/p/dwarftherapist/wiki/BuildingDwarfTherapist). (Basically it's a manual install step, make install doesn't have the instructions to do it)
also, how do i disable that ptrace limitation so i dont have to run DT as root?
Heya thanks. I forgot to say in the v9 version under 34.07 it listed for example Cat, and then in the next collapsable section Cat Child(or Children), and i guess if it was by ID then an animals ID was incremented each time one was born so essentially it's age :) i had over 330 animals at one point lol so had to do a massive cull, makes it a lot easier :) and my stock of 8k+ turkey eggs was a bit overkill ;p
Hi splinterz, i think that the reason why animals aren't grouping is that from the drop-down dox "Race" isn't sorting them as it didn't previously for dwarves, ie it used to group them as Dwaves, Children, Babies.
So, how can I get my Dwarf Therapist, downloaded from the first link on the first page, to read caste and attributes? Also, how to do that update thing, it still reads Bring Crutch instead of (probably) wheelbarrow.
you have to download the Splinterz version from here http://code.google.com/r/splintermind-attributes/ (http://code.google.com/r/splintermind-attributes/)So, how can I get my Dwarf Therapist, downloaded from the first link on the first page, to read caste and attributes? Also, how to do that update thing, it still reads Bring Crutch instead of (probably) wheelbarrow.
Bump for lack of answers.
new version:
- renamed traits to match the wiki/token names
- fixed a few job names
- castes, races and reactions loading optimized
- dwarfs can be assigned/removed from squads via right-click menu. you can assign/remove multiple dwarfs at once. this is done immediately and if grouping by squad the view will be refreshed automatically. only squads with positions available are shown. there may be some invalid squads, i haven't sorted out a way to filter them yet.
- squads can be renamed by right-clicking on the squad name (when grouping by squad)
- when grouping by squad, squads are sorted by position, captains are italicized and prefixed with *
- vampires now show their fake names/ages to match DF
- nicknames are now set properly and won't disappear after notable kills
- animals can be grouped on caste
- grouping animals on race groups by the race name, then child/baby name: dog (puppy)
- grouping on migration wave will properly hide child/baby groups according to options
- fixed improperly drawn sort arrow on first column for linux
- fixed nicknames applying even after clicking cancel
- added some additional flags to filter out dwarfs (courtesy of ag, i haven't tested them)
i haven't had time to do massive testing, but that's what all thesebeta testerscommunity members are for right? ;D
Project Home // DOWNLOAD (http://code.google.com/r/splintermind-attributes/)
- dwarfs can be assigned/removed from squads via right-click menu. you can assign/remove multiple dwarfs at once. this is done immediately and if grouping by squad the view will be refreshed automatically. only squads with positions available are shown. there may be some invalid squads, i haven't sorted out a way to filter them yet.
- squads can be renamed by right-clicking on the squad name (when grouping by squad)
- when grouping by squad, squads are sorted by position, captains are italicized and prefixed with *
- vampires now show their fake names/ages to match DF
- nicknames are now set properly and won't disappear after notable kills
- animals can be grouped on caste
- grouping animals on race groups by the race name, then child/baby name: dog (puppy)
- grouping on migration wave will properly hide child/baby groups according to options
Any chance of getting .deb files for Ubuntu 12.04?
am i the only person who's getting crashes with DT after its been open for a time? i have them happening on windows as well as linux, and they most often manifest when i leave DT for a while and go build in DF, then come back and go to reassign some jobs by just clicking at the boxes, then it just dies.
i'll post a run.log next time it does that.
If you have DT open and connected to dwarf fortress then save your current game and then quickly continue from the main menu. You will be back in-game before DT knows you it is disconnected, if you try to commit any changes, then DT crashes.my crash has nothing to do with it. besides, thats avoided by not being braindead :p
Any chance of getting .deb files for Ubuntu 12.04?
I've recently compiled DT manually* on Debian-- it's very quick (EDIT: and easy), perhaps 5 minutes at the most. You may want to try that first, unless you really need a .deb for some reason.
*Tutorial here (http://code.google.com/p/dwarftherapist/wiki/BuildingDwarfTherapist), with a specific entry for Ubuntu (10.04, but the process should be the same for 12.04). If you choose to do so, feel free to message me for any necessary assistance.
new version:
- renamed traits to match the wiki/token names
- fixed a few job names
- castes, races and reactions loading optimized
- dwarfs can be assigned/removed from squads via right-click menu. you can assign/remove multiple dwarfs at once. this is done immediately and if grouping by squad the view will be refreshed automatically. only squads with positions available are shown. there may be some invalid squads, i haven't sorted out a way to filter them yet.
- squads can be renamed by right-clicking on the squad name (when grouping by squad)
- when grouping by squad, squads are sorted by position, captains are italicized and prefixed with *
- vampires now show their fake names/ages to match DF
- nicknames are now set properly and won't disappear after notable kills
- animals can be grouped on caste
- grouping animals on race groups by the race name, then child/baby name: dog (puppy)
- grouping on migration wave will properly hide child/baby groups according to options
- fixed improperly drawn sort arrow on first column for linux
- fixed nicknames applying even after clicking cancel
- added some additional flags to filter out dwarfs (courtesy of ag, i haven't tested them)
i haven't had time to do massive testing, but that's what all thesebeta testerscommunity members are for right? ;D
Project Home // DOWNLOAD (http://code.google.com/r/splintermind-attributes/)
thanks for all the support! :)Autolabor applies an assignment penalty based on responsibilities, which are derived from nobles, and has special cases for the CMD and broker. See https://github.com/peterix/dfhack/blob/master/plugins/autolabor.cpp, lines 779 to 807.
@Tierre: i'd like to show the noble positions, but as Japa has pointed out, it may be tricky to find them. i'll have to dig through dfhack's offsets and see if i can figure out how/where they're using them
Upon unpausing after looking at this issue, two of my dwarfs randomly turned into recruits. I didn't even go into the military screen in DF yet!In Soviet Russia you become a recruit upon your birth.
- dwarfs can be assigned/removed from squads via right-click menu. you can assign/remove multiple dwarfs at once. this is done immediately and if grouping by squad the view will be refreshed automatically. only squads with positions available are shown. there may be some invalid squads, i haven't sorted out a way to filter them yet.
- dwarfs can be assigned/removed from squads via right-click menu. you can assign/remove multiple dwarfs at once. this is done immediately and if grouping by squad the view will be refreshed automatically. only squads with positions available are shown. there may be some invalid squads, i haven't sorted out a way to filter them yet.
To find which squads actually belong to the current fortress, you need to use ui->main.fortress_entity->squads (contains ids). The same fortress_entity thing also contains noble positions and assignments, but they are more complicated to understand.
Also, you may want to disable changing the squad commander, because that entails appointment as the commander/captain, and DT can't do that, since it involves creating objects - although just simply opening the military screen in-game fixes any mismatch automatically.
ah i see. at first i tried comparing them with the 'bad squads' vector but that wasn't working consistently. i didn't even try the ui vector as i saw the note about it only being valid when the ui was displayed. thanks for the help.
yeah i was actually surprised to see that changing the commander seemed to work. originally i intended not to assign them, but after trying it out i thought it might be alright. do you think it'll potentially cause problems?
i've taken a look at the autolabor script link posted before, but i've been getting hung up on how to read the assignment_id for a histfig_entity_link_positionst.
ah i see. at first i tried comparing them with the 'bad squads' vector but that wasn't working consistently. i didn't even try the ui vector as i saw the note about it only being valid when the ui was displayed. thanks for the help.
Don't ever look at those 'bad' vectors: they are 'bad' because they are serialization/deserialization temporaries and basically contain garbage once anything changes. Can even contain dangling pointers if/when some objects get deleted.
Re ui: that's a different vector altogether. I pointed you at the vector inside the fortress entity (object of the same general kind as civilization).yeah i was actually surprised to see that changing the commander seemed to work. originally i intended not to assign them, but after trying it out i thought it might be alright. do you think it'll potentially cause problems?
It can be surprising. Maybe it should warn that you should open the military screen in-game and look at the squad to finalize changes if you change the commander.i've taken a look at the autolabor script link posted before, but i've been getting hung up on how to read the assignment_id for a histfig_entity_link_positionst.
hm?
for the nobles i was assuming i'd have to walk through similar to this (https://github.com/peterix/dfhack/blob/master/plugins/autolabor.cpp#L779)
for the nobles i was assuming i'd have to walk through similar to this (https://github.com/peterix/dfhack/blob/master/plugins/autolabor.cpp#L779)
The game does it that way, yes; that's because it has to be able to deal with foreign nobles, e.g. diplomats and similar. If you are only interested in local ones, you can directly use fortress_entity->positions.own and fortress_entity->positions.assignments.
Edit: also, see here: https://github.com/peterix/dfhack/blob/master/library/modules/Units.cpp#L710 (https://github.com/peterix/dfhack/blob/master/library/modules/Units.cpp#L710). That autolabor code was copy&pasted from here.
Spoiler (click to show/hide)
I downloaded the latest version of DT and DF and tried connecting, this is what I got.
This layout appears to work with DF 34.11, for the DwarfEngineer version of DT under Windows. Name it v0.34.11_graphics.iniUhh... do what with what? I'd like to know, because as is, I can't use DT anymore. Does it work for vanilla DT, or do I have to go hunting through the topic for a specific thing? (I already tried the search function, it didn't work, so don't even go there)Spoiler (click to show/hide)
Uhh... do what with what? I'd like to know, because as is, I can't use DT anymore. Does it work for vanilla DT, or do I have to go hunting through the topic for a specific thing? (I already tried the search function, it didn't work, so don't even go there)
You can manage squads in splinterz branched version, but that hasn't made it back to the official version yet.
I've uploaded Dwarf Therapist for 34.11 (http://dffd.wimbli.com/file.php?id=6064&posted=true#c_510) to DFFD using the .ini file provided by Slink, for the good of all.
[info]
checksum=0x4fcc9488
version_name=v0.34.11 (graphics)
complete=true
These should work with the splinterz version (I haven't tested the linux version)
Windows layout
Any chance someone has the layouts for 34.11 on OSX?I've found we need to wait on DwarfEngineer for osx layouts. Wonderful people like Slink seem to work primarily on windows machines.
I've always had problems getting the linux package to install. So I just download the sources and compile. It's a very easy build, once you get the prerequisites installed (but don't ask me what they are, I've forgotten). Just 'qmake' then 'make'.Thanks. I've tried some of that too. Qmake seems to work fine, but Make gives me an error 127.
i've finished up another version for you ladies and gentlemen:
v13 34.07-34.11
- the tabs/views will remember their sort and scroll positions (tab/view specific)
i've finished up another version for you ladies and gentlemen:
v13 34.07-34.11
i've finished up another version for you ladies and gentlemen:
v13 34.07-34.11
@splinterz - Something not quite right in the new version. Haven't had a chance to track it down yet, but my Linux build (debian 5.0.8, Qt 4.6.3 - I know, it's a little behind on updates), it goes through the process of loading dwarves, squads, etc with the expected progress bar display, but then hangs before it actually draws the grid. Not sure if that suggests an obvious place to look - I'll try to get a little more info later if necessary. Same results with DF 0.34.07 and 0.34.11 - didn't try all the intermediates...
Is there any way to make therapist read family data ... to keep track of families?
yeah i was afraid the drawing changes might have broken something :-[ it seemed to be alright on my linux virtual machine, but i'll play with it some more, please let me know if you discover anything. maybe take a look at the log file or send it to me.
yeah i was afraid the drawing changes might have broken something :-[ it seemed to be alright on my linux virtual machine, but i'll play with it some more, please let me know if you discover anything. maybe take a look at the log file or send it to me.
Speaking of changes:
Do you know what give the white gray letter color on top of white for the detail of dwarves? I'm struggling to read :)
While I'm at it, thanks for the good work, I can play without your version and the squad management!Spoiler (click to show/hide)
is it only showing light text on the tooltip over the dwarf name, or is it all tooltips?
is it only showing light text on the tooltip over the dwarf name, or is it all tooltips?
edit: ok i've fixed the tooltip color issue, please verify that it's working properly. DOWNLOAD (https://rapidshare.com/files/685926344/Dwarf_Therapist-13.zip)
is it only showing light text on the tooltip over the dwarf name, or is it all tooltips?
edit: ok i've fixed the tooltip color issue, please verify that it's working properly. DOWNLOAD (https://rapidshare.com/files/685926344/Dwarf_Therapist-13.zip)
It appears fixed, thanks.
Finally got round to updating from .04 to .11...
I'm loving the new 'can wield these weapons' feature even though it's about half a dozen ticks after embark. No more hoarding human weapons and seeing who takes one when ordered to!
edit: ok i've fixed the tooltip color issue, please verify that it's working properly. DOWNLOAD (https://rapidshare.com/files/685926344/Dwarf_Therapist-13.zip)
Regarding the noble highlighting, i like the concept but I think the colors are too dark.huh? I do not see what you refer to. For me, nobles are highlighted by * * and italics. *Stephanie de Monaco*
@Argelle: you can turn on highlighting for nobles and choose colors for them in the options. i only created default roles for noble positions have have related labors. you can however create your own custom roles!
@splinterz
Can you make labors, attributes and roles use a stable sort like military currently does?
In the military tab, if I sort by any skill, then sort by another skill, the order of same value skills (in particular 0 value skills) remains unchanged. So If I sort by dodger then by siege operator, all 0 skill siege operators will be sorted by their dodge skill. This is called a stable sort.
I don't know if you're using the STL, but if you are, there is a stable sort algorithm in the standard library.
If anyone's interested, I have working offsets for v0.34.11 on OSX. These are for vanilla Dwarf Therapist; at the moment I can't make Splinterz's version build.Spoiler: Offsets for 34.11 on OSX (click to show/hide)
When will it be compatible with 0.34.11? I get cant communicate errors on start up while using the new DF version
I'm on OS X, and Dwarf Therapist doesn't seem to be working for me with 0.34.11 currently. What do I do with the OS X offsets to make it work?You would have to paste them into your Dwarf Therapist application manually. While not a particularly difficult process, it involves use of the command line. Command-line environments have been found to cause panic and anxiety in the technologically challenged. Proceed at your own risk; consult your local Mac or Linux/Unix guru if symptoms persist:)
cat > v0.34.11.ini
(Now press Apple+V on your keyboard to paste the offset text, then RETURN followed by Control+D. You should get the terminal prompt back at that point.)
cd /Applications/DwarfTherapist.app/Contents/MacOS/etc/memory_layouts/osx
sudo cp ~/v0.34.11.ini .
(It will ask you for your password, type it, your keystrokes will not show up on the screen. Once you hit RETURN and see the terminal prompt again, you're done and can press Control+D to end your terminal session.)
I'm on OS X, and Dwarf Therapist doesn't seem to be working for me with 0.34.11 currently. What do I do with the OS X offsets to make it work?You would have to paste them into your Dwarf Therapist application manually. While not a particularly difficult process, it involves use of the command line. Command-line environments have been found to cause panic and anxiety in the technologically challenged. Proceed at your own risk; consult your local Mac or Linux/Unix guru if symptoms persist:)
First, select the stuff in that 'code' block -- all of it -- and copy it to clipboard with Apple-C. Then open a terminal window (Applications/Launchpad -> Utilities -> Terminal) and, in the terminal window, proceed as follows (text in parenthesis are instructions for you to follow, text outside parenthesis are commands for you to type as shown):Code: [Select]cat > v0.34.11.ini
(Now press Apple+V on your keyboard to paste the offset text, then RETURN followed by Control+D. You should get the terminal prompt back at that point.)
cd /Applications/DwarfTherapist.app/Contents/MacOS/etc/memory_layouts/osx
sudo cp ~/v0.34.11.ini .
(It will ask you for your password, type it, your keystrokes will not show up on the screen. Once you hit RETURN and see the terminal prompt again, you're done and can press Control+D to end your terminal session.)
Now launch Dwarf Therapist like you normally would and it should connect to v0.34.11.
@splinterz
There seems to be a little problem with the info in the mouse-overs sometimes. At least after changing some options and re-read the dwarfs.
The related roles percentages in the cell mouse-over seems to differ until you switch to the roles tab and back. The same for the top 3 roles in the name mouse-over, first there are zero roles, after switching to the roles tab and back there are three again...
Running @ Win7 x64
do you need to go to the roles tab, or does selecting another dwarf on the current tab refresh it after a read?
If anyone's interested, I have working offsets for v0.34.11 on OSX. These are for vanilla Dwarf Therapist; at the moment I can't make Splinterz's version build.Spoiler: Offsets for 34.11 on OSX (click to show/hide)
You don't, you download the ones posted previously.
Hey Splinterz, you've been doin' a great job expanding what dwarf therapist can do. I love it.
However... lol, I've got the same role bug reported by others recently, and in addition migration waves aren't displaying properly. I haven't done any testing to see just what they are doing wrong, but it's definitely getting all jumbled up. That's on DT 13, 34.10, Windows 7 64 bit.
Hello thistleknot,
Can you say a little bit more for the laymandwarf that I am, if it's a DFtherapist branche, a plug in or a side programm?
Argelle
dawrf, the rapistUm, welcome to last year?
:o
Until the dwarves' armies is fully professional (at a 100 pop, they still run two jobs alternatively by me :) swordwarf and bucher for exemple... wait, wrong example, it's the same :s ) it could be 4 masons on paper, but only 3 working and another weapon trainning, right? Do you plan to take this into account?
Related question, if I want 4 masons, until now I hit "group by nothing" in DFtherapist, then click on "mason" to classified what I think is by professional mason and afterthat by the ability to become one, and then click in the box of the candidates until I reach 4: is it the right way and how will it differs with the new comand box?On a side, larger suggestion for DFtherapist: it would be usefull to add a line (top or buttom) with the number of each professions, no? So far it's cover by classified by profession, and the numbers are in the right colum but it's still no obvious how many professions are vacant.edit: one less question, the answer is that DF itself provide a list in the [Z] menu :-[
Um, welcome to last year?
Suggestion here: Make an option to limit the 'Group by' drop list by certain tabs. Perhaps a checkbox on each tab.
It would be useful specifically when you're trying to sort your dwarves by labor skills but not military or social skills.
I hope it's not too hard to implement.
I have an issue with splinterz's where the window will resize to a larger size durring use. This happens when the window is already maximized, so it resizes beyond the size of the screen. I haven't identified when this happens, I just notice that it's sometimes bigger.
And the font rendering, i was wondering why it wasn't as clear before i took these 2 screenshots. It seems compacted uuurgggh.
We'll probably have to wait till the next memory.xml pops out somewhere for a manual update for Dwarf Fortress 34.11The DFHack peeps had working offsets (https://raw.github.com/angavrilov/df-structures/master/windows/therapist.ini) for DwarfTherapist within hours of the DF .34.11 release. Been available now for over a week.
With DFhack having become a tie-in to the SDL the memory.xml probably won't be got as fast
Unless they still use Memory.xml in it.
I got tired of waiting for the "official" OSX offsets, so I made an attempt to do them myself. Based on personal quick tests, these look to be working fine, but no guarantees this won't make your mac warp to another dimension.Spoiler (click to show/hide)
Population,,95,,,Dwarfs per labor,10,,Pop/Cov,1.210191083
Name,P Weight,Coverage,# of Dwarfs,x Pop/Cov,Labor,,,,
Miner,0.5625,2.5,25,30,Mining,,,,
Farmer,0.5625,2.5,25,30,Farming (fields),,,,
Metalsmith,0.523437,2.5,25,30,Custom Profession,,,,
Leatherworker,0.523437,2,20,24,Leatherworking,,,,
Bowyer,0.471094,2,20,24,Crossbow-making,,,,
Carpenter,0.46875,2,20,24,Carpentry,,,,
Mason,0.46875,2,20,24,Masonry,,,,
Brewer,0.46875,2,20,24,Brewing,,,,
Gem Cutter,0.468749,2,20,24,Gem cutting,,,,
Thresher,0.421875,2,20,24,Plant processing,,,,
Craftsdwarf,0.421874,2,20,24,Custom Profession,,,,
Mechanic,0.421874,3,30,36,Mechanics,,,,
Plant Gatherer,0.390625,4,40,48,Plant gathering,,,,
Cook,0.390624,2,20,24,Cooking,,,,
Engraver,0.375,3,30,36,Stone detailing,,,,
Ambusher,0.375,3,30,36,Hunting,,,,
Nurse,0.375,6,60,73,Custom Profession,,,,
Woodcutter,0.34375,2,20,24,Wood cutting,,,,
Trapper,0.328125,2.5,25,30,Trapping,,,,
Lyemaker,0.328125,2,20,24,Lye making,,,,
Fisherdwarf,0.312499,3,30,36,Fishing,,,,
Fish Cleaner,0.281249,2.5,25,30,Fish cleaning,,,,
Spinner,0.273437,2,20,24,Spinning,,,,
Butcher,0.25,3,30,36,Butchery,,,,
Tanner,0.234375,2.5,25,30,Tanning,,,,
Soaper,0.1875,2,20,24,Soap making,,,,
Cheesemaker,0.140624,2,20,24,Cheese making,,,,
Animal Caretaker,0,4,40,48,Animal care,,,,
Wood Burner,0,2.5,25,30,Wood burning,,,,
Milker,-0.000001,2,20,24,Milking,,,,
Shearer,-0.000001,2,20,24,Shearing,,,,
,Sum,78.5,,,,,,,
Need to apply custom professions last!,,,,,,,,,
Heh. You coulda just used mine from a few pages back in the thread. I promise yours won't warp your mac into another dimension, since they appear to be the same as mine :)I got tired of waiting for the "official" OSX offsets, so I made an attempt to do them myself. Based on personal quick tests, these look to be working fine, but no guarantees this won't make your mac warp to another dimension.Spoiler (click to show/hide)
I haven't been following this thread very closely, so my apologies if this is already known/addressed, or if there is a better place to report peculiar behaviours.
In splinterz' build, I've set up some custom roles. They don't appear on the 'roles tab', but they're coming up in the corner window. I copied the 'melee soldier' role, removed the 'rage' trait, and called it 'calm soldier'. Now the odd part: despite rage being unweighted, I have a dwarf with a 91.83 'calm soldier' rating, against a 31.76 'melee soldier' rating. His lack of rage dropped him a full 60 points! This does not seem like intended behaviour.
Melee soldier is the default role,i still don't know what weights you're using but try changing the global weight of the traits if you don't want them to affect ratings as much (options->roles tab). in your example, the lower you set the trait weight, the closer those two roles should come in ratings.
Calm soldier is the default melee role with rage removed.
Icon issue: Milk Creature shows what looks like a Bow icon.thanks, will be fixed in the next update.
Default everything. Across the board.
Attributes:1, Skills:1, Traits:1. The melee soldier role, as well, has weight:1 set to everything.
Are attributes, skills and traits each being compared against each other as averaged sums, or are all such values being considered individually?
It seems like traits are being weighed against attributes and against skills. Since there is only 1 trait and 6 attributes, I think that means that every one of those attributes is being considered only 1/6th as valuable as that 1 trait. I have not performed maths to confirm this notion.
BUG: If an animal is set as "Available" to be tamed ingame and then you set it to butcher it in DT then it is already treated as owned and so when it dies it gets put in the corpse stockpile and then given a tomb...it works fine if you butcher it from ingame. I'm guessing there is a flag that isn't being cleared which makes it get treated this way.
BUG: If an animal is set as "Available" to be tamed ingame and then you set it to butcher it in DT then it is already treated as owned and so when it dies it gets put in the corpse stockpile and then given a tomb...it works fine if you butcher it from ingame. I'm guessing there is a flag that isn't being cleared which makes it get treated this way.
just to be sure, you mean 'Toggle pet availability' to available, and then slaughter?
BUG: If an animal is set as "Available" to be tamed ingame and then you set it to butcher it in DT then it is already treated as owned and so when it dies it gets put in the corpse stockpile and then given a tomb...it works fine if you butcher it from ingame. I'm guessing there is a flag that isn't being cleared which makes it get treated this way.
just to be sure, you mean 'Toggle pet availability' to available, and then slaughter?
Yep on the Status->Animals screen.
BUG: If an animal is set as "Available" to be tamed ingame and then you set it to butcher it in DT then it is already treated as owned and so when it dies it gets put in the corpse stockpile and then given a tomb...it works fine if you butcher it from ingame. I'm guessing there is a flag that isn't being cleared which makes it get treated this way.
just to be sure, you mean 'Toggle pet availability' to available, and then slaughter?
Yep on the Status->Animals screen.
bah. i'm not sure what's going on then. i did some comparisons of the 'ready to slaughter' flag, setting it from DF and then from DT and it was identical. there must be something else happening :-\
just to make certain i'm following your actions: set animal to available, then set to slaughter in DT results in corpse stockpile->tomb right?
Default everything. Across the board.
Attributes:1, Skills:1, Traits:1. The melee soldier role, as well, has weight:1 set to everything.
Are attributes, skills and traits each being compared against each other as averaged sums, or are all such values being considered individually?
It seems like traits are being weighed against attributes and against skills. Since there is only 1 trait and 6 attributes, I think that means that every one of those attributes is being considered only 1/6th as valuable as that 1 trait. I have not performed maths to confirm this notion.
it takes a weighted average of all attributes, all traits and all skills to get three total ratings. it then uses the global weights to take a weighted average of the 3 totals. finally it adjusts it with a cdf to acquire a rank relative to the population.
so in your example, the single trait is valued equally to all the attributes, and equally to any/all skills, as they're all set to 1.
Individual attribute are weighted less, but attributes as a whole are weighed as the settings indicate. It's intuitive.Default everything. Across the board.
Attributes:1, Skills:1, Traits:1. The melee soldier role, as well, has weight:1 set to everything.
Are attributes, skills and traits each being compared against each other as averaged sums, or are all such values being considered individually?
It seems like traits are being weighed against attributes and against skills. Since there is only 1 trait and 6 attributes, I think that means that every one of those attributes is being considered only 1/6th as valuable as that 1 trait. I have not performed maths to confirm this notion.
it takes a weighted average of all attributes, all traits and all skills to get three total ratings. it then uses the global weights to take a weighted average of the 3 totals. finally it adjusts it with a cdf to acquire a rank relative to the population.
so in your example, the single trait is valued equally to all the attributes, and equally to any/all skills, as they're all set to 1.
Okay, we're on the same page. I don't think this is the right way to do it because it results in traits, skills and attributes being weighted differently depending on how many values belong to each category.
Individual attribute are weighted less, but attributes as a whole are weighed as the settings indicate. It's intuitive.
Third, there is no indication the game evaluates skill, traits and attributes in this way.Traits can make a difference to the quality of created goods. I once had a dwarf with a bunch of green mental stats step in as a mechanic, and he started producing high-quality mechanisms right away despite having no preferences for mechanisms or relevant stone types.
In-this-way meaning lumped in this fashion. I'm not arguing that traits influence certain elements of the game.
I felt it was rude that this fella comes in and completely invalidates the points I was making, despite my presenting evidence that one trait (or the lack thereof) influenced role score by a full 60 (!!!) points.
In-this-way meaning lumped in this fashion. I'm not arguing that traits influence certain elements of the game.I don't see the problem. Melee soldier is an unusual role because no melee soldier will use all of the skills listed under the role. So using it as a model for how other roles should behave is a bad idea. However, given this particular fact, having the 1 associated trait be 6 times more important than all the military skills makes sense, assuming that the relative importance of traits to skills should be 1 to 1 in the first place.
I felt it was rude that this fella comes in and completely invalidates the points I was making, despite my presenting evidence that one trait (or the lack thereof) influenced role score by a full 60 (!!!) points.
hrmm what about leaving the generic melee/ranged military roles in the default roles tab, add individual weapon skill roles to the military tab, and put the noble roles first on the default tab, followed by the civilian roles?How about making the roles tab look like the labors tab, except with a purple category for nobles at the end (so that most of the rest of is the same), and an other category too for roles that are neither noble related nor map to labors?
Dwarves have a Push/Guide Minecart job somewhere in the labors tab, but I couldn't find it as a settable labor in the therapist. Is this supported in the current version?
Also the therapist somehow allowed me to rename some merchant bodyguard dwarves from a caravan, but only after said guards had killed a couple goblins, I could also set their labors, it didn't change anything in-game other than their name, and it confused me for a while.
Welcome to 1955
Um, welcome to last year?
Um, welcome to 1998.
http://www.youtube.com/watch?v=htoFkn6S0H8
:P
Sorry for crap video but the alternative is a 6 minute video.
i'm working on adding role information to the tooltips of the military tab columns, rather than a complete additional set of role columns as it's redundant. however this brings up a few questions on preference:
should i add armor and shield skills to all weapon roles (axedwarf, speardwarf..) or only the weapon skill itself?
should it be sorted by total skill experience, and then role rating, or sorted by whether they have any experience at all, and then role rating? the latter is subtly different in that dwarves with any xp at all are still at the top of the list, but they're sorted by role rating (labor columns currently sort like this).
should i add armor and shield skills to all weapon roles (axedwarf, speardwarf..) or only the weapon skill itself?I would say do add shield and armor skills to all weapon roles.
should it be sorted by total skill experience, and then role rating, or sorted by whether they have any experience at all, and then role rating? the latter is subtly different in that dwarves with any xp at all are still at the top of the list, but they're sorted by role rating (labor columns currently sort like this).That's the problem with using the skill indicators to also show roles. A dwarf with experience should be the most fit for the job, so would appear on the top of the role rating anyway, under default settings. And if that's not the case, then clearly the player thinks that some other qualities, other than experience are more important and has balanced the roles for that. But if the display shows the skills, not the role, then you'd expect it to sort by experience first.
yeah but it'll be the same kind of option that's there for showing role information in the labor columns. the more i look at it, it just seems to make sense to sort by role, and keeping anyone with any experience up at the top. i haven't heard any complaints about the labor columns which do the same type of thing. it's still very obvious with the drawing methods who has higher a skill, but at a glance i can also tell who the best fits for the associated role(s) are.I think it's important to allow sorting by roles only, not just sorting by skills then roles. That doesn't apply to the labor tab, because the role tab exists. But if the military roles are moved to the military tab, we don't want to lose the ability to sort by roles.
it's win-win for myself, but i'll have to include an option for those who want to keep skill column solely for showing skills. as a side bonus it should also work on all the social tab columns too, finally that tab may be useful! :P
2012-Jun-19 16:55:52.787 INFO core Dwarf Therapist "0.6.12" starting normally. [src/dwarftherapist.cpp:103] (setup_logging)
2012-Jun-19 16:55:52.885 INFO core Loaded 8 views from disk [src/viewmanager.cpp:134] (reload_views)
2012-Jun-19 16:55:52.886 DEBUG core group_by now set to 0 [src/models/dwarfmodel.cpp:624] (set_group_by)
2012-Jun-19 16:55:52.889 DEBUG core group_by now set to 0 [src/models/dwarfmodel.cpp:624] (set_group_by)
2012-Jun-19 16:55:52.889 DEBUG core "redrew views in 4ms" [src/viewmanager.cpp:254] (draw_views)
2012-Jun-19 16:55:53.002 DEBUG core setting up connections for MainWindow [src/mainwindow.cpp:124] (MainWindow)
2012-Jun-19 16:55:53.005 DEBUG core group_by now set to 8 [src/models/dwarfmodel.cpp:624] (set_group_by)
2012-Jun-19 16:55:53.005 DEBUG core group_by now set to 8 [src/models/dwarfmodel.cpp:624] (set_group_by)
2012-Jun-19 16:55:53.005 DEBUG core beginning to read settings [src/dwarftherapist.cpp:125] (read_settings)
2012-Jun-19 16:55:53.005 DEBUG core finished reading settings [src/dwarftherapist.cpp:173] (read_settings)
2012-Jun-19 16:55:53.034 DEBUG core attempting connection to running DF game [src/mainwindow.cpp:243] (connect_to_df)
2012-Jun-19 16:55:53.036 ERROR core No valid memory layouts found in the following directories... () [src/dfinstance.cpp:113] (DFInstance)
2012-Jun-19 16:55:53.055 DEBUG core executable "0x08048000-0x08eac000 (15,089,664 bytes) /home/zach/Games/Dwarf Fortress/libs/Dwarf_Fortress HEAP: 0" [src/dfinstancelinux.cpp:436] (map_virtual_memory)
2012-Jun-19 16:55:53.067 ERROR core Could not attach to PID 22625 [src/dfinstancelinux.cpp:197] (attach)
2012-Jun-19 16:55:53.067 ERROR core Unable to open "/proc/22625/mem" [src/dfinstancelinux.cpp:230] (read_raw)
2012-Jun-19 16:55:53.067 DEBUG core base_addr: 0 HEX 0 [src/dfinstancelinux.cpp:356] (find_running_copy)
2012-Jun-19 16:55:53.103 DEBUG core DF's checksum is "0x71406692" [src/dfinstancelinux.cpp:360] (find_running_copy)
2012-Jun-19 16:55:53.103 INFO core Dwarf fortress path: "/home/zach/Games/Dwarf Fortress" [src/dfinstancelinux.cpp:367] (find_running_copy)
Hrm. I got it working after rebuilding it. Dont' know why, but as long as it works, that's okay!
I do have one other, pretty minor question. If I try to run it without sudo it'll load up and be skinned with my system theme, however it wont' be allowed to access DF to grab the dwarf data. If I run it with sudo however, it will access the data, but it skins looking like something from Windows 95. Any idea why this is or how to correct it?
breadman wrote up a bash script that allows one to run therapist without sudo. The script allows you to get around ptrace, which blocks the non-sudo program from accessing DF memory, and you won't need to use sudo anymore.
His post is here: http://www.bay12forums.com/smf/index.php?topic=65326.msg2565429#msg2565429
I have been getting trouble adapting his solution to work with dfhack, though... replacing df with dfhack doesn't work as well as I would like... I wish I knew more about bash scripting.
alright, new version!
- added new default military-alt view which includes individual weapon roles
- color coded the existing default roles tab to match the labor colors/ordering
- added a ton more default roles for individual crafting labors and weapon skills
- added teacher, student, armor, shield roles to default military tab
- added option to apply gradients on happiness, job and enabled labor cells
- grids/views remember their group setting
- updated sleep, beer icon and fixed milking job icon
- added option to show role information in skill columns
- column header text is always centered
- added option choose column header font
- cell drawing stuff is properly centered once again
- fixed cell drawing/painting (borders, sizes)
- pets are no longer butcherable, indicated by a red shaded square
- DF connection alert will occur immediately now upon DF exiting
- on break and idle will sort/group separately
- fixed a bug causing the details pane to show multiple dwarf details (i think this will resolve the re-sizing issue, let me know if it doesn't)
- fixed role sorting in context menus
- when changing a nickname the current nickname is shown in the edit box
- dwarf name on the details pane is now word wrapped
Project Home // Download (http://code.google.com/r/splintermind-attributes)
Really appreciate it; has made my dorfing much easier and enjoyable!
One question, on the project page, where it says "see commit log for offset changes," if I don't know exactly what this means and can't find a 'commit log,' does that mean I don't need to worry about it? (i.e. it's intended for modders or something beyond my skill level) :P
Also, I assume I can use this with 34.07, based on the project page?
Looks like a great update Splinterz!
I really like your role view, I was doing something similar with my spreadsheet... so nice!
i try to make note of the offset changes (http://code.google.com/r/splintermind-attributes/source/list) and their dfhack references primarily for ag as he's been generating layout files from the dfhack structures (https://github.com/angavrilov/df-structures), which is incredibly helpful when updates are released. it should be fine with 34.07, although i haven't tested that version extensively, so if you find something amiss let me know.
i try to make note of the offset changes (http://code.google.com/r/splintermind-attributes/source/list) and their dfhack references primarily for ag as he's been generating layout files from the dfhack structures (https://github.com/angavrilov/df-structures), which is incredibly helpful when updates are released. it should be fine with 34.07, although i haven't tested that version extensively, so if you find something amiss let me know.
Hello :)
Just reporting a minor glitch: when assigning a Dwarf into a squad, the page goes blank (except header) and one needs to change tab (military -> labor -> military) to get the list back on.
BTW I like the advances in splinter's branch, the new military-alt is useful for displaying different infos.
Thanks Splinterz:) Actually funny thing - this is a Jdwarf bug:) It should heal, but can resurrect ercently deceased too (author didn't intended that to be i think). Masterwork mod has interactions on resurrecting dwarfes - will DT see those too? I think it is really interesting to see how DT reacts to resurrection by any means, not only Jdwarf:) But that's really not urgent;)
@thistleknot: i'm unable to reproduce this with or without filter scripts running. are you sure this isn't related to the extra stuff you've in?
@Argelle: thanks for the report, i'll have a fix up for the squad assignment asap
@Xen0n: i don't currently have a fort with a monarch to test with, so if you wouldn't mind uploading your save i'll get to the bottom of the highlighting issue. otherwise it might be a while ;)
Glad to see there's a place to report bugs for splinterz version of DT (i should have searched here first ^^) - but use of the google code site web feature to track bugs would be better, imo.
So, here is my problem : the last version of splinterz DT do not sort columns, most of the time. It's a new problem, previous version was ok. I use no other mod, i play under windows (any chance to have a linux version of DT - for ubuntu users, the kind who absolutely don't understand anything to things like "compile" "make" and other nighmares... ?).
Good luck !
I can use it on Ubuntu ? :o
Without Wine ? How ?
And i just discover my problem isn't really one... when a job is inactivate, DT seem to prefer sorting by attribute than by level of the job. It's not a bug, it's a feature ? ;) It could make sense but... can we have that behaviour as an option ?
Thank you again for the good job (having theses "Dwarven Guidance Counselor" features again are so cool, and far better directly in DT).
- added tooltips to labor column headers showing how many dwarves currently have the labor enabled
- added an additional option to show the enabled labor count on the column header text (ie. 5 Mining, 17 Woodcutting..)
Thanks again! Especially for:
- added tooltips to labor column headers showing how many dwarves currently have the labor enabled
- added an additional option to show the enabled labor count on the column header text (ie. 5 Mining, 17 Woodcutting..)
I'm always having to switch back to the "Nothing" sort list to find out how many leatherworkers I currently have etc., this will help a lot!
Thanks again! Especially for:
- added tooltips to labor column headers showing how many dwarves currently have the labor enabled
- added an additional option to show the enabled labor count on the column header text (ie. 5 Mining, 17 Woodcutting..)
I'm always having to switch back to the "Nothing" sort list to find out how many leatherworkers I currently have etc., this will help a lot!
yeah i know what you mean :) by the way, thanks for that save (bonus points for the alliteration) it helped out a ton with the noble stuff and adjusting the details pane for those dwarves with massive nicknames
Yeah load up DF, load in fort, then start up DT and that's what i get :) i tried changing the Group By to different stuff but nothing makes a difference with regards to the names and it trying to set nickname many many times, although as you can see the Commit Changes button isn't even highlighted.
Yeah load up DF, load in fort, then start up DT and that's what i get :) i tried changing the Group By to different stuff but nothing makes a difference with regards to the names and it trying to set nickname many many times, although as you can see the Commit Changes button isn't even highlighted.
see if this build resolves it. (https://rapidshare.com/files/272912307/Dwarf_Therapist-15.1.zip)
Where are you getting the info for weapon sizing? I bought a halberd from the human caravan and nobody wants to equip it. DT seems able to tell whether a dwarf will multigrasp a longsword or pick, and I can get dwarves to equip them with no problem. It's just the human-sized weapons giving me trouble. With 34 dwarves I'd expect at least one of them to be 5% bigger than the average dwarf, so I'm not sure where the problem really is.
I'm using v15.2.
So the size of a dwarf is a number that DT reads? I know how weapon sizing works, I'm just trying to figure out why they're ignoring the halberd.
Alright then, seems like it's purely an in-game problem.
Spoiler (click to show/hide)
All three military dwarves should be large enough. The comment about expecting at least one of thirty-four dwarves being able to wield a halberd was just in case DT was reading the dwarves wrong, but if it's looking at a number provided by the game itself then there shouldn't be an issue.
Alright, so splinterz puts out an awesome variant of DT from what I can see, with on problem: When I click on a column header in the labour tab, it doesn't sort the dwarves by skill anymore. Right now, if I click on Blacksmith, it puts my 7 Blacksmith at the top, but leaves my 2 Blacksmith who doesn't have the labour assigned down near the bottom; Is there a way to get this to go back to the vanillia DT behaviour? I liked having that for assigning more and less of a labour as needed, and checking if I should replace dwarves with my new migrants.
Thanks; Sorry if I didn't take the time to read 150+ pages looking for this, but I'm hoping with all the people here I'll have an answer soon.
Can you point me to a wiki page explaining how the traits and attributes factor into a Dwarf doing his or her job?
I mean, if a 0 skill dwarf IS actually better then 12, sure, I'll make that guy my carver, but it seems...unlikely. Or is DF just that non-intuitive?
I mean, if a 0 skill dwarf IS actually better then 12, sure, I'll make that guy my carver, but it seems...unlikely. Or is DF just that non-intuitive?
btw, I'm still having occasionall crashes, but I'd have to send you a save, and a video to show you where, cuz it's only when i'm assigning militia.
maintain "group by" inbetween (grid view) tabs.
minor feature request.
maintain "group by" inbetween (grid view) tabs.
No worries. I'm sure you have a long list of "feature requests". ;)
As a more limited request, while you're adding an option for thistleknot to apply the grouping to all views, would it be feasible to also add an option to apply the row viewing position (ie the scroll position of the grid) of the current view to all views?
No worries. I'm sure you have a long list of "feature requests". ;)
As a more limited request, while you're adding an option for thistleknot to apply the grouping to all views, would it be feasible to also add an option to apply the row viewing position (ie the scroll position of the grid) of the current view to all views?
i like that one. I've noticed that the sort order gets thrown off inbetween views, would make things a lot easier if the sort order/dwarf selected were consistent between grid views.
there are some instructions here (http://code.google.com/p/dwarftherapist/wiki/BuildingDwarfTherapist) that should work.As a Ubuntu user, that's exactly what i try to avoid... but anyway, i did it. And it almost worked :)
there are some instructions here (http://code.google.com/p/dwarftherapist/wiki/BuildingDwarfTherapist) that should work.As a Ubuntu user, that's exactly what i try to avoid... but anyway, i did it. And it almost worked :)
I obtained a linux native DT. It launch, but don't see DF running. If i clic the "connect to DF" button, it become gray, nothing happen. If i clic the "read dwarves" button, it complain of "Dwarf Fortress has either stopped running, or you unloaded your game. Please re-connect when a fort is loaded."
I tried to make the vanilla DT, and i also obtain a linux native DT. But it crash right after launch ("ptrace attach: Opération non permise" - translate as "ptrace attach: operation not allowed", i suppose).
So... if annyone got an idea...
You need to set the kernel.yama.ptrace_scope sysctl to 0. Echo '0' to /proc/sys/kernel/yama/ptrace_scope for a temporary fix, or modify the relevant sysctl.conf or sysctl.d/ config file to set the appropriate value for a permanent fix at boot.UristMacUbuntu has been miserable lately.
No worries. I'm sure you have a long list of "feature requests". ;)
As a more limited request, while you're adding an option for thistleknot to apply the grouping to all views, would it be feasible to also add an option to apply the row viewing position (ie the scroll position of the grid) of the current view to all views?
i like that one. I've noticed that the sort order gets thrown off inbetween views, would make things a lot easier if the sort order/dwarf selected were consistent between grid views.
it's not so much 'thrown off' as it's saving your scroll position and grouping per view. selection shouldn't change if you're not re-reading.
No worries. I'm sure you have a long list of "feature requests". ;)
As a more limited request, while you're adding an option for thistleknot to apply the grouping to all views, would it be feasible to also add an option to apply the row viewing position (ie the scroll position of the grid) of the current view to all views?
i like that one. I've noticed that the sort order gets thrown off inbetween views, would make things a lot easier if the sort order/dwarf selected were consistent between grid views.
it's not so much 'thrown off' as it's saving your scroll position and grouping per view. selection shouldn't change if you're not re-reading.
I think it saves the last sort done in that specific grid view.
Just to let you know, thistleknot, that your addition to DF is quite useful ti some of us :)
Anyway, within DFTherapist per se, I realize, looking at a video of a french guy (http://www.youtube.com/watch?v=LXQqC...=youtu.be&hd=1) playing hardcore (naked embark), that some do have plenty of choices for weapons' skills, whereas for the last two fortress of mine, up to 140 and 80 dwarves, I only see red dots in one and only column:Bug? Very unliky?Spoiler (click to show/hide)
Just to let you know, thistleknot, that your addition to DF is quite useful ti some of us :)
By the way, whatever happened to the ability to assign dorfs to squads in splinterz build? The last few source builds I've used haven't given me the ability to assign anyone to a squad.
Also, I've noticed that the roles screen has been redone and that 'Melee Soldier' and 'Ranged Soldier' are no longer in the mix. This makes choosing militia candidates inconvenient, and when I attempt to create a similar custom role, it won't show up anywhere.
My friend uses the precompiled Windows build and retains the ability to assign to squads. I'm running a source build on linux pulled from the repository.
i'm unaware of problems assigning squads on linux. i'll do some testing to verify, but can you elaborate on what the problem is? it doesn't work, or you don't have a menu option? what version are you running and are you using mods?
the generic melee and ranged roles have been split into individual roles based on weapon skills which is much more accurate when searching for potential militia than the previous roles with every all skills. check the alternate military view included.
if you create a custom role, you'll need to add it to a custom view for it to show up, or name it the same name as one of the roles on the default roles tab to override it on that tab. let me know if you have more questions.
Someone on reddit posted a bug http://i.imgur.com/D1NZE.jpg
Someone on reddit posted a bug http://i.imgur.com/D1NZE.jpg
yeah that's not really any help at all without details.
whats the status of DT in linux?Splinterz's version works fine under Linux.
If you're playing 34.11, and you have dfhack, there is a new "sort" command that organizes the unit list, and even some other lists, too. GODSEND!This forum is as much amazing/great as DF itself!
Spoiler (click to show/hide)
nevermind... can do by sorting by race...
new bug:
cursed dwarf check... not working... where should i be looking for the highlight? On the unit name? I have it set to purple, and I have a cursecheck command showing 1 (and 1 reported drained of blood) and yet... no one is highlighted.
yes... I'm a dirty cheater...
Dt (Splinterz's one) stoped working for me, for no apparent reason.
I'm on Ubuntu 12.04.
I haven't played during more than a week, and several updates came to Ubuntu during that time (it's the only things that have changed, i can't see other reason).
Today, DT just crash at launch. I try re download it and compile it again, but it still crash right after launch.
I tried to launch DT via CLI, to have an error message on terminal, but there isn't any.
What can i do to have more valuable information to give to you ?
- i thought a good hunter should be good in marksdwarf and in ambush. DT tell me than one of my dwarve is supposed to be a good hunter but he is bader than the others at ambush and marksdwaf (all have no skill - i start naked; no stuff, no skill). How can this be possible ? Are there other things than ambush and marksdwarf to consider to be a good hunter ?
Spoiler (click to show/hide)
nevermind... can do by sorting by race...
new bug:
cursed dwarf check... not working... where should i be looking for the highlight? On the unit name? I have it set to purple, and I have a cursecheck command showing 1 (and 1 reported drained of blood) and yet... no one is highlighted.
yes... I'm a dirty cheater...
yes they should be highlighted like nobles. i may have to check another offset if it's not working. at the moment it's checking the curse name and i have no idea if there are curses without names. send me the save?
...squad grouping was by squad assignment, and not by active military...
Is it possible to avoid puting strangers (like caravane merchants and their bodyguards) in DT ? They seem to not do what i tell them to do ;)
this definitely shouldn't be happening if you're using my branch.I do :)
if you've updated the ini files manuallyI don't (just copied them from a place to another, as said in the wiki comments - if not, DT did not launch).
double check the flags here (http://code.google.com/r/splintermind-attributes/source/browse/etc/memory_layouts/linux/v034.11.ini)(near the end)They seem to be the same.
otherwise upload the save and i'll take a closer look.By "the save", you mean, the "region" folder ?
By "the save", you mean, the "region" folder ?
Here it is : https://www.dropbox.com/sh/qx2togqprh8xlna/yPjaOyDwwMQuoteBy "the save", you mean, the "region" folder ?
yes the region folder in data/save/ which has the problem.
...squad grouping was by squad assignment, and not by active military...
i don't know what this means, please elaborate.Is it possible to avoid puting strangers (like caravane merchants and their bodyguards) in DT ? They seem to not do what i tell them to do ;)
this definitely shouldn't be happening if you're using my branch. if you've updated the ini files manually double check the flags here (http://code.google.com/r/splintermind-attributes/source/browse/etc/memory_layouts/linux/v034.11.ini)(near the end). otherwise upload the save and i'll take a closer look.
Oh... you know what... I think I was mixing up the filter script with squad grouping's.
It would be nice if the filter script active_military was filtering squads and not military that are currently active.
I believe as it is, it does not filter dwarf's that are assigned to a squad, but have no scheduled order....squad grouping was by squad assignment, and not by active military...
i don't know what this means, please elaborate.Is it possible to avoid puting strangers (like caravane merchants and their bodyguards) in DT ? They seem to not do what i tell them to do ;)
this definitely shouldn't be happening if you're using my branch. if you've updated the ini files manually double check the flags here (http://code.google.com/r/splintermind-attributes/source/browse/etc/memory_layouts/linux/v034.11.ini)(near the end). otherwise upload the save and i'll take a closer look.
2012-Jul-19 14:20:00.671 INFO core Dwarf Therapist "0.6.12" starting normally. [..\dwarftherapist-splintermind-copy\src\dwarftherapist.cpp:104] (DwarfTherapist::setup_logging)
Crashes on startup for me with my existing ini file, if i remove it then it works fine. I guess it doesn't like one of my custom views.
This is the only line it lists in the log when it crashes:Code: [Select]2012-Jul-19 14:20:00.671 INFO core Dwarf Therapist "0.6.12" starting normally. [..\dwarftherapist-splintermind-copy\src\dwarftherapist.cpp:104] (DwarfTherapist::setup_logging)
someone on reddit suggested an old suggestion. the ability to change the orientation of profession names (I believe he was referring to the 90 degree angle of labor/role names). Similar to how excel lets you change the angle.
Also...
it would be awesome to have a number next to a dwarf's name showing the number of labors he has assigned...
Crashes on startup for me with my existing ini file, if i remove it then it works fine. I guess it doesn't like one of my custom views.
This is the only line it lists in the log when it crashes:Code: [Select]2012-Jul-19 14:20:00.671 INFO core Dwarf Therapist "0.6.12" starting normally. [..\dwarftherapist-splintermind-copy\src\dwarftherapist.cpp:104] (DwarfTherapist::setup_logging)
would you mind sending me your ini?
Crashes on startup for me with my existing ini file, if i remove it then it works fine. I guess it doesn't like one of my custom views.
This is the only line it lists in the log when it crashes:Code: [Select]2012-Jul-19 14:20:00.671 INFO core Dwarf Therapist "0.6.12" starting normally. [..\dwarftherapist-splintermind-copy\src\dwarftherapist.cpp:104] (DwarfTherapist::setup_logging)
would you mind sending me your ini?
Sent, it's got some views that i setup in v13/14 in it so i guess they are the problem. I can recreate them np if needed.
Feature request: On the animals page is it possible we can set the pet availability. I've been doing this to keep track of the breeding pairs i want to keep which have juicy attribs.
Crashes on startup for me with my existing ini file, if i remove it then it works fine. I guess it doesn't like one of my custom views.
This is the only line it lists in the log when it crashes:Code: [Select]2012-Jul-19 14:20:00.671 INFO core Dwarf Therapist "0.6.12" starting normally. [..\dwarftherapist-splintermind-copy\src\dwarftherapist.cpp:104] (DwarfTherapist::setup_logging)
would you mind sending me your ini?
Sent, it's got some views that i setup in v13/14 in it so i guess they are the problem. I can recreate them np if needed.
Feature request: On the animals page is it possible we can set the pet availability. I've been doing this to keep track of the breeding pairs i want to keep which have juicy attribs.
ok the problem is with those weapon columns which have multiple weapon names ('Scourges, Whips', etc.) i've fixed it from crashing but i'll have to look into adding support to add those grouped columns. for now you can still add the weapon columns, but only the individual weapons, the groups aren't available. for you this only affects the 'Military (v13)' tab you had setup i believe.
Here's the updated zip. (https://rapidshare.com/files/1369237444/Dwarf Therapist-16.zip)
if it's still broken let me know. i'll see if it's possible to toggle the pet state on animals, but no promises. :)
someone on reddit suggested an old suggestion. the ability to change the orientation of profession names (I believe he was referring to the 90 degree angle of labor/role names). Similar to how excel lets you change the angle.
Also...
it would be awesome to have a number next to a dwarf's name showing the number of labors he has assigned...
are you talking about column headers when you say profession names?
Arrghhh!!! I'm on a mini vacation, but there's still a problem with the script editing. Yes, I can change, and delete but if I have an active running script, and then try to create a new one the new one overwrites the old one. oh man... closing and re-opening to create a new script... can't create any new script, only overwrites the 1st position... oh man oh man oh man oh man oh man... no!!!!!!!!
Took me a while to read this thru my tears... but i think i can pull the gun out of my mouth. ;) jk...Arrghhh!!! I'm on a mini vacation, but there's still a problem with the script editing. Yes, I can change, and delete but if I have an active running script, and then try to create a new one the new one overwrites the old one. oh man... closing and re-opening to create a new script... can't create any new script, only overwrites the 1st position... oh man oh man oh man oh man oh man... no!!!!!!!!
this should fix it. (https://rapidshare.com/files/4103961805/Dwarf Therapist-16.zip)
Hi splinterz. I am using your latest dt from a couple posts above. Everything was working fine until a migration wave came (this was the fourth wave). At this point I refreshed dt to see the new immigrants (as I had done before with the other waves) and that's when dt crashed. This is a modded DF (LFR plus my own mods). Any ideas why would be very welcome as I quite like your version. Here's the log:Spoiler (click to show/hide)
Yup, got one. Where do I upload it?
OK, here you go. It's at http://dffd.wimbli.com/file.php?id=6695 (http://dffd.wimbli.com/file.php?id=6695) with the heading: splinterz DT crash savegame chromasphere
Oh... you know what... I think I was mixing up the filter script with squad grouping's.
It would be nice if the filter script active_military was filtering squads and not military that are currently active.
I believe as it is, it does not filter dwarf's that are assigned to a squad, but have no scheduled order....squad grouping was by squad assignment, and not by active military...
i don't know what this means, please elaborate.Is it possible to avoid puting strangers (like caravane merchants and their bodyguards) in DT ? They seem to not do what i tell them to do ;)
this definitely shouldn't be happening if you're using my branch. if you've updated the ini files manually double check the flags here (http://code.google.com/r/splintermind-attributes/source/browse/etc/memory_layouts/linux/v034.11.ini)(near the end). otherwise upload the save and i'll take a closer look.
you can use d.squad_id() in scripts to filter out dwarves in squads. -1 is the returned value for a dwarf who hasn't been assigned to a squad.
thanks
this did the trick
d.squad_id()<0
=-1 didn't work, so I had to do that
bug
here's the upload (masterwork)
http://www.mediafire.com/?cvgcr2mcmwrc1n5
so, when I add Ber Ebalreg to the squad "Scars of Shielding", crash of DT
bug
here's the upload (masterwork)
http://www.mediafire.com/?cvgcr2mcmwrc1n5
so, when I add Ber Ebalreg to the squad "Scars of Shielding", crash of DT
yeah that dwarf is apparently assigned to a squad which no longer exists. had you assigned/unassigned him to squad(s) before updating to the latest DT build? regardless here's the fix:
download (https://rapidshare.com/files/556789431/Dwarf Therapist-16.zip)
OK, here you go. It's at http://dffd.wimbli.com/file.php?id=6695 (http://dffd.wimbli.com/file.php?id=6695) with the heading: splinterz DT crash savegame chromasphere
alright so the problem was due to names belonging to invalid languages. i suspect this is due to your modding, so you may want to look into it further. what DF does (and now DT too) in this case is uses the last language as it can't find the correct one. so in your current for you've got a bunch of creatures either without last names or with 'void language' last names.
i've updated the source and the packaged file for this issue. (https://rapidshare.com/files/3714897111/Dwarf Therapist-16.zip)
can you do a right click assign to noble position like you did with military?That would be great :)
that would be awesome!
I've started using the splinterz clone, and so far love the additions made. However, there is one piece of information that I think should be vital to the roles system that I haven't been able to find; preferences. Maybe I've just been looking in the wrong place, but being able to find a dwarf's preferences somewhere through therapist would be amazing. The effect it has on the quality of items produced is rather profound, and is often the deciding factor when I choose dwarves for specific roles in the fort. Aside from that minor request, loving the work put into it! Awesome job, really. :D
I've started using the splinterz clone, and so far love the additions made. However, there is one piece of information that I think should be vital to the roles system that I haven't been able to find; preferences. Maybe I've just been looking in the wrong place, but being able to find a dwarf's preferences somewhere through therapist would be amazing. The effect it has on the quality of items produced is rather profound, and is often the deciding factor when I choose dwarves for specific roles in the fort. Aside from that minor request, loving the work put into it! Awesome job, really. :D
Is this what your referring to? (excerpt from v16 synoposis)
* added grouping by moodable skill
* highest moodable skill is highlighted in the dwarf details pane
Crashes on startup for me with my existing ini file, if i remove it then it works fine. I guess it doesn't like one of my custom views.
This is the only line it lists in the log when it crashes:Code: [Select]2012-Jul-19 14:20:00.671 INFO core Dwarf Therapist "0.6.12" starting normally. [..\dwarftherapist-splintermind-copy\src\dwarftherapist.cpp:104] (DwarfTherapist::setup_logging)
would you mind sending me your ini?
Sent, it's got some views that i setup in v13/14 in it so i guess they are the problem. I can recreate them np if needed.
Feature request: On the animals page is it possible we can set the pet availability. I've been doing this to keep track of the breeding pairs i want to keep which have juicy attribs.
ok the problem is with those weapon columns which have multiple weapon names ('Scourges, Whips', etc.) i've fixed it from crashing but i'll have to look into adding support to add those grouped columns. for now you can still add the weapon columns, but only the individual weapons, the groups aren't available. for you this only affects the 'Military (v13)' tab you had setup i believe.
Here's the updated zip. (https://rapidshare.com/files/1369237444/Dwarf Therapist-16.zip)
if it's still broken let me know. i'll see if it's possible to toggle the pet state on animals, but no promises. :)
IF NOT EXIST "INI" md "INI"
IF NOT EXIST "%APPDATA%\UDP Software" md "%APPDATA%\UDP Software"
IF NOT EXIST "%APPDATA%\UDP Software\Dwarf Therapist.ini" (
move /-Y "INI\Dwarf Therapist.ini" "%APPDATA%\UDP Software\Dwarf Therapist.ini" )
DwarfTherapist.exe
move /-Y "%APPDATA%\UDP Software\Dwarf Therapist.ini" ".\INI\Dwarf Therapist.ini"
Hey, Splintrz, have you considered making your own thread, so that we can track the latest version more easily?
Anyway, thanks for keeping it updated.
- added options to synchronize scrolling and grouping between all views
download (https://rapidshare.com/files/556789431/Dwarf Therapist-16.zip)
You can happily use the splinter's branch of therapist with DF 34.11 :thank you kind sirdownload (https://rapidshare.com/files/556789431/Dwarf Therapist-16.zip)
splinter,
Thanks to you I pulled and compiled your clone of DT.
I found that highest moodable skill was correctly finding the moodable skills but incorrectly sorting for lowest moodable skill.
I couldn't find a location to submit a patch on google code, so here is a patch that fixed the problem for me.Spoiler (click to show/hide)
If you have a preferred way of people submitting bug reports/patches I'm all ears.
Thanks
p.s. DwarfEngineer thanks for your work as well.
Holy shite that is awesome, i was thinking about this just the other day. Brilliant addition!
Feature request: Is it possible to display a dwarfs speed? this is another thing i was thinking about, useful for military !!SCIENCE!! maybe this is best left to something like dfhack though.
Edit: One issue just now, DT seemed to hang on exit. The process still existed but all windows had gone, so i thought i'd exit DF before killing off the process and then pop everything came back on screen and i could exit safetly. I have been unable to reproduce this. Hadn't noticed this behaivour before.
Holy shite that is awesome, i was thinking about this just the other day. Brilliant addition!
Feature request: Is it possible to display a dwarfs speed? this is another thing i was thinking about, useful for military !!SCIENCE!! maybe this is best left to something like dfhack though.
Edit: One issue just now, DT seemed to hang on exit. The process still existed but all windows had gone, so i thought i'd exit DF before killing off the process and then pop everything came back on screen and i could exit safetly. I have been unable to reproduce this. Hadn't noticed this behaivour before.
hrmm i'll have to try and reproduce that process hang myself. i'm not sure about the speed, isn't it directly correlated to agility?
in the dwarf details pane (grouped by type). note: this is hidden by default, it's at the very bottom, drag it up to see it
Quotein the dwarf details pane (grouped by type). note: this is hidden by default, it's at the very bottom, drag it up to see it
I looked through all the menu's, and looked at a few dwarf's detail pane's... scrolled all the way to the bottom of each of 4 menu's...
am I missing how to find this preference area... I'm new to the concept of preference
Quotein the dwarf details pane (grouped by type). note: this is hidden by default, it's at the very bottom, drag it up to see it
I looked through all the menu's, and looked at a few dwarf's detail pane's... scrolled all the way to the bottom of each of 4 menu's...
am I missing how to find this preference area... I'm new to the concept of preference
preferences (drink, items, materials, etc.) have been added
Quotein the dwarf details pane (grouped by type). note: this is hidden by default, it's at the very bottom, drag it up to see it
I looked through all the menu's, and looked at a few dwarf's detail pane's... scrolled all the way to the bottom of each of 4 menu's...
am I missing how to find this preference area... I'm new to the concept of preference
the panes themselves can be completely collapsed. you should get a different resize/expand cursor at the very bottom of the container pane itself (just below the roles pane if it's showing) and be able to drag up from there to show the preferences. so the ordering is skills->attributes->traits->roles->preferences.
the dock window is in the menu under windows->docks->preferences.
in the dwarf details pane (grouped by type). note: this is hidden by default, it's at the very bottom, drag it up to see it
new version is up!so u are the new guy in charge of the project? :) welcome, sir :)
- preferences (drink, items, materials, etc.) have been added
- preferences can be viewed multiple ways:
- simple list in the tooltip
- in the dwarf details pane (grouped by type). note: this is hidden by default, it's at the very bottom, drag it up to see it
- a new dockable window has been added to show all preferences of the current population, and their respective likes/dislikes. selecting preferences will filter the view to only show those dwarfs who have the preference. this filtering should also work in conjunction with any currently running scripts.
- added file->snapshot menu to take a snapshot image of the current view
Project Home // Download (https://rapidshare.com/files/2839750514/Dwarf%20Therapist-17.zip)
let me know what you think. i'm concerned with the tooltips getting too large with all the additional information, so i'm considering putting in options to choose which information is shown in the tooltips.
please report any bug reports and i'll fix things up asap.
it would be nice to see it from the details pane from the grid view, rather than having to look at details (but I bet that's crowded already... a slider bar would be nice).
Also... it would be nice to have some of grid view of those numbers if possible... I'm so new to this concept Preferences
so preferences might be useful for filling mayor's orders... I get it...
Could someone upload splinter's dwarf therapist to mediafire? I can't use rapidshare
Could someone upload splinter's dwarf therapist to mediafire? I can't use rapidshare
i'll start uploading again to mediafire as well now that they seem to have fixed their site's issues. here is the mediafire download link to the most recent version. (http://www.mediafire.com/?veivu76nmat7avf)
Could someone upload splinter's dwarf therapist to mediafire? I can't use rapidsharei'll start uploading again to mediafire as well now that they seem to have fixed their site's issues. here is the mediafire download link to the most recent version. (http://www.mediafire.com/?veivu76nmat7avf)
Could someone upload splinter's dwarf therapist to mediafire? I can't use rapidsharei'll start uploading again to mediafire as well now that they seem to have fixed their site's issues. here is the mediafire download link to the most recent version. (http://www.mediafire.com/?veivu76nmat7avf)
Any particular reason that you don't want to use the Dwarf Fortress File Depot (http://dffd.wimbli.com/)? It's kind of what it was designed for.
Alternatively, it seems that DwarfEngineer seems to have wondered off, but perhaps you could merge your branch into the main branch and use the Google Code page for development and hosting?
i don't have any access to the main branch so it'll be up to DwarfEngineer to perform the merge whenever he's got time and if he wants to.I don't know why he wouldn't wanna merge, your branch is awesome ;)
At the risk of looking dumb, is there a native version of Dwarf Therapist for Linux? I download the supposed Windows SDL & Linux version, but it just opens in Wine and doesn't see a running version of Linux DF. Do I need to compile it by hand, or is this just a case of me being dumb?What distro are you on? It is packaged for some distroes (I maintain it for archlinux (https://aur.archlinux.org/packages.php?ID=60079))
At the risk of looking dumb, is there a native version of Dwarf Therapist for Linux? I download the supposed Windows SDL & Linux version, but it just opens in Wine and doesn't see a running version of Linux DF. Do I need to compile it by hand, or is this just a case of me being dumb?What distro are you on? It is packaged for some distroes (I maintain it for archlinux (https://aur.archlinux.org/packages.php?ID=60079))
splintermind-attributes is fairly easy to compile by hand. Just clone the hg repo and run qmake && make (you need qt4 devel headers etc ofcourse)
If you need help poke me in #dwarffortress on freenode
ppa (https://launchpad.net/ubuntu/+ppas) would be the place for look for packages, but the last time I checked noone had packaged it yet.
is there a way to ignore military when looking at the list of labors?
or look acording to migrant wave?
or filter out nicknamed dwarves?
Is it possible to make DT not show certain skills in the skill list? My screen isn't wide enough for the program and I am not interested in half the skills anyway.That would be great :)
Is it possible to make DT not show certain skills in the skill list? My screen isn't wide enough for the program and I am not interested in half the skills anyway.
The columns themselves. Fro all I know there might be an option for it but I didn't find it.
So no answer for my question? I still can't find the mac 34.11 patch.
So no answer for my question? I still can't find the mac 34.11 patch.
It appears that it hasn't been updated past version 34.10.[/obvious]
So no answer for my question? I still can't find the mac 34.11 patch.
It appears that it hasn't been updated past version 34.10.[/obvious]
As has been stated a million times already when asked, it was working with 34.11 on the day it was released...splinterz version is the most recent and upto date just go back a few pages and download that.
Are you looking for a Mac executable or ready to compile? If the latter, I do believe Splinterz branch has a Google Code page (I may be out to lunch on the code repository of choice), so I'd say search this thread back through the last dozen pages or so (could be less, not sure) for a link to the project page.
Has anyone gotten this working on the mac for .34.11? I couldn't get the one on the first post to download the updated id file.
Heh. You coulda just used mine from a few pages back in the thread. I promise yours won't warp your mac into another dimension, since they appear to be the same as mine :)I got tired of waiting for the "official" OSX offsets, so I made an attempt to do them myself. Based on personal quick tests, these look to be working fine, but no guarantees this won't make your mac warp to another dimension.Spoiler (click to show/hide)
Aww crap, I wish I would have seen that. Oh well, thanks for your work. At least now I know my numbers aren't bad!
Hey guys! I have this great idea for a new invention! It's called the wheel!
;)
A little help for an idiot.
I USED to know how to get the latest DT to work on my Mac, but I have a new laptop now and no memory of what I did. Something something offsets is all I know. I did download the Dwarf Therapist-17.zip but its not MAc formatted, and now I just feel dumber than usual.
Any help?
I'm sorry but I don't know how to talk to this version of Dwarf Fortress! (checksum:0x8f421f9c)
Supported Versions:
v0.34.05(0x3db6627a)
v0.34.06(0x8a93b19d)
v0.34.04(0xdf8202f3)
v0.34.07(0x20d42b0f)
QuoteI'm sorry but I don't know how to talk to this version of Dwarf Fortress! (checksum:0x8f421f9c)
Supported Versions:
v0.34.05(0x3db6627a)
v0.34.06(0x8a93b19d)
v0.34.04(0xdf8202f3)
v0.34.07(0x20d42b0f)
So I'm getting this after going into /Applications/DwarfTherapist.app/Contents/MacOS/etc/memory_layouts/osx , making a copy of the 0.34.07 ini file, and then editing that file by replacing the 0.34.07 checksum with the reported one (0x8f421f9c) and changing the version number within the INI file, and then finally renaming the file to v0.34.11.ini.
So... what did I do wrong?
None of that works for me, I simply get a crash on launch:
9/4/12 12:15:41.364 AM ReportCrash[23509]: failed looking up LS service ( scCreateSystemService returned MACH_PORT_NULL, called from SetupCoreApplicationServicesCommunicationPort, so using client-side NULL calls.
Dwarf Fortress and dfhack both work fine.
I've played DF vanilla for the entire time I've played it - now I'm looking into dwarf the rapist.
It looks amazing! My only problem on first start up though: having the names of the jobs so that I have to tilt my head is super distracting. Do you get used to it?
Can I do anything about it?
Augh, I only wish I could see this on my machine! I downloaded Splinterz' DF, but it's a .zip and runs in Mono or Wine, so naturally it can't see the native Linux DF session that's running. I've gotten used to running DF without this tool, but after I hit 50 or so dwarves it's something I would find very handy. How on earth did you get DT running on Ubuntu? >:(Is it possible to make DT not show certain skills in the skill list? My screen isn't wide enough for the program and I am not interested in half the skills anyway.That would be great :)
What about another panel in the options, named "skills you want to see in the labor panel", with everything marked "on" by default ?
Btw, about the options panel, here is a tiny bug : part of the words don't appear on top. 100% reproductible, Linux only bug, not Windows.
(http://img15.hostingpics.net/pics/851573Capturedu20120804180937.png) (http://www.hostingpics.net/viewer.php?id=851573Capturedu20120804180937.png)
Augh, I only wish I could see this on my machine! I downloaded Splinterz' DF, but it's a .zip and runs in Mono or Wine, so naturally it can't see the native Linux DF session that's running. I've gotten used to running DF without this tool, but after I hit 50 or so dwarves it's something I would find very handy. How on earth did you get DT running on Ubuntu? >:(
I much prefer the splinterz version, but it has two problems for me. First is that the size of the grid changes back and forth between squares and tall rectangles, about half the time when I click on it. For example, I'll want to enable all the medical labors on a dwarf. When I click "diagnosis" all of the squares will change to rectangles which moves the labor checkbox for surgery down about an inch or two on my screen. When I click that one they change back into squares and move back up. It's way more annoying than it sounds.
Has anyone else had these issues at all?
Hey, does this version work on .31.25? I'm not comfortable with DF 2012 so I'm going back to a version I am comfortable with.
If not, can I get a link to the .31.25-compatible version?
if(DT->user_settings()->value("options/hide_children_and_babies",true).toBool() == false
|| (d->profession()!="Child" && d->profession()!="Baby"))
feature request:
a way to search for preferences (rather than just show), like a grid view of sorts. It seems preferences are multi-dimensional (since there's multiple categories of preferences. almost would need a very large grid view that showed Materials, Items, Food & Drink, Dislikes, Creatures, etc... and each specific item PER dwarf)., so I'm not sure how one could do a grid view, it would be huge, but without it, one would have to view each dwarf for there preferences and assign them... kind of like the old way of doing stuff inside Dwarf Fortress.
if I wanted to find bed constructing as a preference, the only way I know how to do it is look through every dwarf. That's the main issue. A search feature would be nice if a grid can't be accomodated.
Do I understand correctly that DT does not work yet for the latest version of DF? (0.34.11)?Did you try using splinterz's version?
Could dwarf therapist.ini be moved into the dwarf therapist folder, rather be buried in some deep app data folder. The main reasoning I ask is because sometimes I have custom roles saved in there, and when moving the dwarf therapist folder from pc to pc, I have to dig this file out to and replace it.
IF NOT EXIST "INI" md "INI"
IF NOT EXIST "%APPDATA%\UDP Software" md "%APPDATA%\UDP Software"
IF NOT EXIST "%APPDATA%\UDP Software\Dwarf Therapist.ini" (
move /-Y "INI\Dwarf Therapist.ini" "%APPDATA%\UDP Software\Dwarf Therapist.ini" )
DwarfTherapist.exe
move /-Y "%APPDATA%\UDP Software\Dwarf Therapist.ini" ".\INI\Dwarf Therapist.ini"
void MainWindow::initializeSuperStruct()
{
QList<Dwarf*> m_selected_dwarfs = m_view_manager->get_selected_dwarfs();
int d_count = m_selected_dwarfs.size();
//get labors per dwarf
bool ok;
QString labors_p = QInputDialog::getText(0, tr("Labors per dwarf"),
tr("How many dwarves do you want to assign per labor?"), QLineEdit::Normal,"", &ok);
if (!ok)
return;
int labors_per = labors_p.toInt();
//get csv filename
ok = 0;
QString file_name = QInputDialog::getText(0, tr("CSV input file"),
tr("Name of input file for assigning labors?"), QLineEdit::Normal,"", &ok);
if (!ok)
return;
//int file_name = csv_n.toInt();
using namespace std;
//dwarf count, to be pulled from selection
//labor count, to be pulled from init .csv
int role_count = 0;
//does not work
string st;
//SUPERSTRUCT!
QVector <superStruct> sorter;
QVector <roles> ListOfRolesV;
//ifstream f( filename.c_str() );
//ifstream f("role_labor_list.csv");
string f_holder = file_name.toStdString();
ifstream f(f_holder.c_str());
//ifstream f (file_name.c_str());
//loops through each line in the file
while (getline (f, st))
{
int pos = 1;
//placeholder
roles p_holder;
//gets the line for processing
istringstream iss( st );
//loops through each , in one line
while (getline (iss, st, ','))
{
//role_name, labor_id, priority_weight, num_to_assign
if (pos == 1)
{
p_holder.role_name = QString::fromStdString(st);
}
else if (pos == 2)
{
int fieldValue = 0;
istringstream (st) >> fieldValue;
p_holder.labor_id = fieldValue;
}
else if (pos == 3)
{
float fieldValue = 0.0f;
istringstream (st) >> fieldValue;
p_holder.priority = fieldValue;
}
else if (pos == 4)
{
int fieldValue = 0;
istringstream (st) >> fieldValue;
p_holder.numberToAssign = fieldValue;
}
p_holder.numberAssigned = 0;
pos++;
}
ListOfRolesV.push_back(p_holder);
pos = 1;
}
f.close();
role_count = ListOfRolesV.size();
//now time to initialize the superStruct
//count # dwarf's
//foreach(Dwarf *d, m_view_manager->get_selected_dwarfs()) {d_count++;}
//resize based on # dwarfs * # of roles
sorter.resize(d_count*role_count);
QString *temp;
int sstruct_pos = 0;
//for(int sstruct_pos = 0; sstruct_pos < sorter.size(); sstruct_pos++)
{
//cycle through each Dwarf,
foreach (Dwarf *d, m_view_manager->get_selected_dwarfs())
{
int dwarf_count = 0;
//cycle through each Role in ListOfRolesV
for (int role_entry = 0; role_entry < ListOfRolesV.size(); role_entry++)
{
//problem here... need a role per dwarf which I have, but Dwarf doesn't have anywhere to save a w_percent...
//Could just load into superStruct, but it won't be a pointer...
sorter[sstruct_pos].d_id = d->id();
sorter[sstruct_pos].labor_id = ListOfRolesV[role_entry].p_l_id();
//QString role_name = ListOfRolesV[role_entry].p_r_name();
//not sure if this is what I want
sorter[sstruct_pos].role_name = ListOfRolesV[role_entry].p_r_name();
//can't use pointers with this
sorter[sstruct_pos].r_percent = d->get_role_rating(ListOfRolesV[role_entry].role_name);
sorter[sstruct_pos].w_percent = ListOfRolesV[role_entry].priority * d->get_role_rating(ListOfRolesV[role_entry].role_name);
sstruct_pos++;
}
//probably not needed
dwarf_count ++;
}
}
//used for debug pause
int test = 0;
//sort superstruct by w_percent
//runs through list
for (int i = 0; i < sorter.size(); i++)
{
//checks against lower element
//cout << *s->at(i).pPercent << endl;
for (int j = 1; j < (sorter.size()-i); j++)
{
//using pointer dereferences messed this up, but, not using them doesn't sort right
if (sorter[j-1].w_percent < sorter[j].w_percent)
{
swap(sorter[j-1], sorter[j]);
}
}
}
//now to assign labors!
//vs running through each labor, and assigning up to max # dwarf's...
//1. need to start from top of allRoles
//2. see what labor is, see if goal is met.
//DONE (via csv input) for DEPLOY APP, need to change this to see if labor is asked for
//3. Y - Skip (use while statement)
//4. N -
//a. Check Dwarf to see if he is available (again, while Statement),
//not available if has conflicting labor
// Y - Assign
// N - Skip
//start from top of list.
for (int sPos = 0; sPos < sorter.size(); sPos++)
{
//dwarf position (used for searching of name)
//I would like to set these to pointers, but I was getting out of bound issues...
int dPos = 0;
//role position
int rPos = 0;
//cycle through each dwarf? I should, but, I can use the *s->at(x).name to find the Dwarf #
//no, need to compare roleName to dwarfName
//search for Dwarf (y) for that role
for (int d = 0; d < d_count; d++)
{
//dPos is never getting updated.
//int temp = d->id();
if (sorter[sPos].d_id == m_selected_dwarfs.at(d)->id())
{
dPos = d;
//break;
};
//dPos++;
}
//match superStruct roleName to myRoles name position (to check if filled up)
for (int r = 0; r < ListOfRolesV.size(); r++)
{
if (sorter[r].role_name == ListOfRolesV[r].role_name)
{
rPos = r;
//break;
};
};
//search if role @ rPos is filled up
//role check started...
if (ListOfRolesV[rPos].numberAssigned < *ListOfRolesV[rPos].n_assign())
{
//need to compare to total_assigned_labors,
//this will be used for Custom Professions
int currentAssigned = m_selected_dwarfs.at(dPos)->total_assigned_labors();
//is Dwarf (d) laborsAssigned full? Used in proto-type
if (currentAssigned < labors_per)
{
//another check to check for conflicting laborid's,
//AND
//to see if labor_id flag is checked in Options.
int debug = ListOfRolesV[rPos].labor_id;
//m_selected_dwarfs.at(dPos)->toggle_labor(ListOfRolesV[rPos].labor_id);
m_selected_dwarfs.at(dPos)->toggle_labor(debug);
//assign labor (z) to Dwarf @ dPos
//add labor (z?) to Dwarf's (d) labor vector
//m_selected_dwarfs.at(dPos).laborsAssigned.push_back(r->at(rPos).name);
//increase labors assigned to roles vector
//role check completed
ListOfRolesV[rPos].numberAssigned++;
}
}
}
m_model->calculate_pending();
};
if ( (MHWExceed) && ((labor == 0) || (labor == 10) || (labor == 44)))
{
//truncate miner, hunter, woodcutter to population size
pre_number_to_assign = ListOfRolesV[x].coverage / MHWCoverage * m_selected_dwarfs.size();
}
else if (MHWExceed)
{
//since miner, hunter, woodcutter are being truncated down to population size, we need to remove that from the jobs to assign
pre_number_to_assign = ListOfRolesV[x].coverage / modifiedTotalCoverage * (jobs_to_assign - m_selected_dwarfs.size());
}
else
{
//normal
pre_number_to_assign = (ListOfRolesV[x].coverage / modifiedTotalCoverage) * jobs_to_assign;
}
So despite it looking like maybe in the near future I won't need to organize my dwarves myself (although this might be a bit undwarfy), I downloaded splinterz's most recent build and I'm really missing the sort by profession option. I've sorted my dwarves by profession for a while now and am wondering if there's is any way for me to somehow add it in myself, or if doing something like that would be very complicated, perhaps the feature could be readded to the new build?
Looks like great work guys. The optimizer is impressive - can't wait to start using it. Thanks heaps! :)
Minor bug report: The dwarven caravan members are now showing up in DT when they visit to trade. I have 190 dwarves in my fort. The caravan has just arrived, and now I'm showing 204 in DT (an extra seven guards and seven merchants are fully listed).
I have a save if you want it, but I guess it can be replicated pretty easily. I'm running DT 18.1 and DF 34.11 SDL.
thanks for the report, unfortunately i have a save with merchants, but they don't show up in DT, so i may still need you to upload that save if it's not too much trouble.
thanks for the report, unfortunately i have a save with merchants, but they don't show up in DT, so i may still need you to upload that save if it's not too much trouble.
The caravan was halfway through arriving when I "Read Dwarves" in DT and it showed the extra 14 from the caravan. However, a minute or two later after the whole caravan had arrived, DT stopped showing the caravan members. My save is exactly when those extra 14 are showing, so hopefully it can help diagnose the problem.
Here is the save file (http://rapidshare.com/files/232603802/SavedGame.zip).
I can't remember where the screen is centered, but F7 is the hotkey for the Traders Depot in the unlikely event you need to look at it in-game.
Good luck and thanks again! Let me know what happens and if I can provide any other info. I'm also running DFHack, but hopefully that hasn't made a difference - I don't use it for much.
thanks for sending the save file and the detailed report, it's a huge help.
I have some suggestions that I thought I'd run past you splinterz and see what you thought. Make of them what you will. :)
The first suggestion is (hopefully) relatively minor. The "Group By" drop down box can list 10 categories, which I think back in the day used to be all of them. But there are now 16 categories, which necessitates much scrolling up and down over the course of a DF session. Would it be possible to make the number of concurrently displayed categories (ie the size of the drop down box) equal to the total number of categories?
The second suggestion is a bit more beefy. I put a fair bit of effort in to managing the highest moodable skills on all my dwarves to ensure I get the maximum number of artifact weapons and armour, and the minimum number of artifact toy forges. With around 200 dwarves, it's a big job, but it's made a lot harder because I can't directly tell who has already had a mood from the main view.
For example, I have twelve dwarves in the "Metalworker" custom profession and I want to set three of them to do metalcrafting, but I don't want any of the three to be ones who haven't yet had a mood, because the experience gain in metalcrafting skill could overtake the current highest moodable skill (say weaponsmith or armoursmith) and result in an artifact goblet. The only ways for me to tell who has already had a mood that I know about are to change Group By to Highest Moodable Skill, multi-select all the dwarves who have already had a mood, change back to group by Profession, and then enable the metalcrafting labour on the highlighted dwarves. Seeing as the multi-highlighting is lost as soon as I click to enable a labour, I have to go through the whole process again and again if I forget which dwarves are highlighted or there are a lot of dwarves to set labours for.
The other way to tell is to right-click on each dwarf in the "Metalworker" custom profession sequentially and select Show Details, scroll down the Skill list until I find the one that's highlighted in blue, hover the cursor over it until the tooltip appears and tells me if they've already had a mood, and then close the Details box. This gets pretty tedious pretty fast for lots of dwarves.
If I could tell who has had a mood from the main grid view that would save me so much time and fiddly effort. It seems to me the best solution would be a new column, "Highest Moodable Skill". It could re-use some of the icons from the "Current Job" column to indicate what is the current highest moodable skill, or the "No Job" icon to indicate there has already been a mood. An added advantage of this method would be the you could sort on this column.
Another way I can think of to do it would be to put a coloured border around the labour cells for the highest moodable skill, in the same way as for "Pending Changes", but with different colours. Say a blue border around the cell for the labour that is the current highest moodable skill, or a green border if they have already had a mood for that skill. The red of a pending change would take precedence over either of these. This method would not allow sorting.
A couple of minor ancillary suggestions are in the Details of a dwarf under Skills to change the highlight colour of the highest moodable skill if the have already had a mood (so you don't have to hover for the tooltip), and to add text to the header section of Details (around the Name and Age section) to say "Creator of <artifact name>" in the same way as the [v]iew - [g]eneral header section of DF (though this last suggestion might be a bit tricky I would guess and is not really important).
Anyway, just thought I'd make some suggestions that would make managing Highest Moodable Skills a whole lot easier. Look forward to hearing your thoughts, and thanks in advance for considering them.
I commend these detailed requests...
i think these are some great ideas.
first, for the dropdown, it's trivial to increase the amount of visible items, and i'll be sure to fix that in the next release. i like the idea of adding the highest moodable skill column, specifically because of the ability to sort. it's also easy to add additional column types so this is very feasible. i'll also try to change the color of the background for skills which have already had a mood in the details pane, that makes sense as well. i'll also see about adding some extra information about the highest moodable skill in some of the tooltips.
i can't comment on the artifact idea as i'd need to look into if it's possible, but it might be.
i was hoping to get the next release out by now, but i noticed there's a nasty memory leak every time a read is performed that i'm trying to hunt down. hopefully i'll get it sorted soon before it drives me insane.
src/laboroptimizer.cpp: In member function ‘void LaborOptimizer::optimize_labors(QList<Dwarf*>)’:
src/laboroptimizer.cpp:133:5: error: ‘sort’ is not a member of ‘std’
make: *** [bin/release/laboroptimizer.o] Error 1
I just tired building the default branch from splintermind-attributes on Linux and it failed with this error.I was able to build it using a different distro.Code: [Select]src/laboroptimizer.cpp: In member function ‘void LaborOptimizer::optimize_labors(QList<Dwarf*>)’:
src/laboroptimizer.cpp:133:5: error: ‘sort’ is not a member of ‘std’
make: *** [bin/release/laboroptimizer.o] Error 1
2012-Dec-23 22:11:21.252 INFO core Dwarf Therapist "0.6.12" starting normally. [src/dwarftherapist.cpp:103] (setup_logging)
2012-Dec-23 22:11:21.313 INFO core Loaded 8 views from disk [src/viewmanager.cpp:136] (reload_views)
2012-Dec-23 22:11:21.314 DEBUG core group_by now set to 0 [src/models/dwarfmodel.cpp:782] (set_group_by)
2012-Dec-23 22:11:21.317 DEBUG core group_by now set to 0 [src/models/dwarfmodel.cpp:782] (set_group_by)
2012-Dec-23 22:11:21.317 DEBUG core "redrew views in 4ms" [src/viewmanager.cpp:258] (draw_views)
2012-Dec-23 22:11:21.361 DEBUG core setting up connections for MainWindow [src/mainwindow.cpp:140] (MainWindow)
2012-Dec-23 22:11:21.362 DEBUG core group_by now set to 0 [src/models/dwarfmodel.cpp:782] (set_group_by)
2012-Dec-23 22:11:21.363 DEBUG core beginning to read settings [src/dwarftherapist.cpp:125] (read_settings)
2012-Dec-23 22:11:21.363 DEBUG core finished reading settings [src/dwarftherapist.cpp:173] (read_settings)
2012-Dec-23 22:11:21.387 DEBUG core attempting connection to running DF game [src/mainwindow.cpp:262] (connect_to_df)
2012-Dec-23 22:11:21.389 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.389 DEBUG core adding valid layout "v0.34.11" "0xe966ee88" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.389 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.389 DEBUG core adding valid layout "v0.34.10" "0x71406692" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.390 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.390 DEBUG core adding valid layout "v0.34.09" "0xde041bf6" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.390 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.390 DEBUG core adding valid layout "v0.34.08" "0xe4a4d9c6" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.391 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.391 DEBUG core adding valid layout "v0.34.07" "0x61b4fa72" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.391 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.391 DEBUG core adding valid layout "v0.31.25" "0xfc15065c" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.391 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.391 DEBUG core adding valid layout "v0.31.24" "0xa47468ce" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.392 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.392 DEBUG core adding valid layout "v0.31.22" "0xc8e82e6e" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.392 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.392 DEBUG core adding valid layout "v0.31.22" "0xc7319be1" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.392 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.392 DEBUG core adding valid layout "v0.31.21" "0xc3d2af10" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.392 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.392 DEBUG core adding valid layout "v0.31.20" "0x6d33ec73" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.393 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.393 DEBUG core adding valid layout "v0.31.19" "0x8fcb1f10" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.393 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.393 DEBUG core adding valid layout "v0.31.18" "0x884f794d" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.393 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.393 DEBUG core adding valid layout "v0.31.17" "0x03afc836" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.393 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.393 DEBUG core adding valid layout "v0.31.16" "0x9cca2fa5" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.394 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.394 DEBUG core adding valid layout "v0.31.15" "0x1cd8dc24" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.394 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.394 DEBUG core adding valid layout "v0.31.08" "0xe3775089" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.394 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.394 DEBUG core adding valid layout "v0.31.05" "0xfea3801a" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.394 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.394 DEBUG core adding valid layout "v0.31.04" "0x1d759a11" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.394 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:21.394 DEBUG core adding valid layout "v0.28.181.40d16" "0xdab3ce6b" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:21.400 ERROR core Unable to open "/proc/0/maps" [src/dfinstancelinux.cpp:381] (map_virtual_memory)
2012-Dec-23 22:11:21.400 ERROR core Could not attach to PID 0 [src/dfinstancelinux.cpp:192] (attach)
2012-Dec-23 22:11:21.400 ERROR core Unable to open "/proc/0/mem" [src/dfinstancelinux.cpp:225] (read_raw)
2012-Dec-23 22:11:21.400 DEBUG core base_addr: 0 HEX 0 [src/dfinstancelinux.cpp:351] (find_running_copy)
2012-Dec-23 22:11:21.402 DEBUG core DF's checksum is "0x00000000" [src/dfinstancelinux.cpp:355] (find_running_copy)
2012-Dec-23 22:11:21.402 INFO core Dwarf fortress path: "/media/Linux_Data/Dwarf_Fortress/Utilities/DwarfTherapist/0_Build/dwarftherapist_2012-12-23/bin/release" [src/dfinstancelinux.cpp:362] (find_running_copy)
2012-Dec-23 22:11:24.532 DEBUG core attempting connection to running DF game [src/mainwindow.cpp:262] (connect_to_df)
2012-Dec-23 22:11:24.532 DEBUG core already connected, disconnecting [src/mainwindow.cpp:264] (connect_to_df)
2012-Dec-23 22:11:24.532 DEBUG core DFInstance baseclass virtual dtor! [src/dfinstance.cpp:123] (~DFInstance)
2012-Dec-23 22:11:24.534 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.534 DEBUG core adding valid layout "v0.34.11" "0xe966ee88" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.534 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.534 DEBUG core adding valid layout "v0.34.10" "0x71406692" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.535 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.535 DEBUG core adding valid layout "v0.34.09" "0xde041bf6" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.535 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.535 DEBUG core adding valid layout "v0.34.08" "0xe4a4d9c6" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.535 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.535 DEBUG core adding valid layout "v0.34.07" "0x61b4fa72" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.536 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.536 DEBUG core adding valid layout "v0.31.25" "0xfc15065c" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.536 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.536 DEBUG core adding valid layout "v0.31.24" "0xa47468ce" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.536 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.536 DEBUG core adding valid layout "v0.31.22" "0xc8e82e6e" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.536 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.536 DEBUG core adding valid layout "v0.31.22" "0xc7319be1" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.536 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.536 DEBUG core adding valid layout "v0.31.21" "0xc3d2af10" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.536 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.536 DEBUG core adding valid layout "v0.31.20" "0x6d33ec73" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.536 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.536 DEBUG core adding valid layout "v0.31.19" "0x8fcb1f10" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.537 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.537 DEBUG core adding valid layout "v0.31.18" "0x884f794d" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.537 DEBUG core valid_flags_2 count: 1 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.537 DEBUG core adding valid layout "v0.31.17" "0x03afc836" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.537 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.537 DEBUG core adding valid layout "v0.31.16" "0x9cca2fa5" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.537 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.537 DEBUG core adding valid layout "v0.31.15" "0x1cd8dc24" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.537 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.537 DEBUG core adding valid layout "v0.31.08" "0xe3775089" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.537 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.537 DEBUG core adding valid layout "v0.31.05" "0xfea3801a" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.537 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.537 DEBUG core adding valid layout "v0.31.04" "0x1d759a11" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.537 DEBUG core valid_flags_2 count: 0 [src/memorylayout.cpp:85] (load_data)
2012-Dec-23 22:11:24.537 DEBUG core adding valid layout "v0.28.181.40d16" "0xdab3ce6b" [src/dfinstance.cpp:108] (DFInstance)
2012-Dec-23 22:11:24.543 ERROR core Unable to open "/proc/0/maps" [src/dfinstancelinux.cpp:381] (map_virtual_memory)
2012-Dec-23 22:11:24.543 ERROR core Could not attach to PID 0 [src/dfinstancelinux.cpp:192] (attach)
2012-Dec-23 22:11:24.543 ERROR core Unable to open "/proc/0/mem" [src/dfinstancelinux.cpp:225] (read_raw)
2012-Dec-23 22:11:24.543 DEBUG core base_addr: 0 HEX 0 [src/dfinstancelinux.cpp:351] (find_running_copy)
2012-Dec-23 22:11:24.544 DEBUG core DF's checksum is "0x00000000" [src/dfinstancelinux.cpp:355] (find_running_copy)
2012-Dec-23 22:11:24.544 INFO core Dwarf fortress path: "/media/Linux_Data/Dwarf_Fortress/Utilities/DwarfTherapist/0_Build/dwarftherapist_2012-12-23/bin/release" [src/dfinstancelinux.cpp:362] (find_running_copy)
2012-Dec-23 22:11:24.547 DEBUG core Connection to unknown DF Version established. [src/mainwindow.cpp:292] (connect_to_df)
2012-Dec-23 22:11:29.270 WARNING core lost connection to DF [src/mainwindow.cpp:355] (lost_df_connection)
2012-Dec-23 22:11:29.279 DEBUG core group_by now set to 0 [src/models/dwarfmodel.cpp:782] (set_group_by)
2012-Dec-23 22:11:29.280 DEBUG core DFInstance baseclass virtual dtor! [src/dfinstance.cpp:123] (~DFInstance)
2012-Dec-23 22:11:32.677 INFO core Beginning shutdown [src/mainwindow.cpp:252] (closeEvent)
2012-Dec-23 22:11:32.677 DEBUG core beginning to write settings [src/mainwindow.cpp:228] (write_settings)
2012-Dec-23 22:11:32.677 DEBUG core finished writing settings [src/mainwindow.cpp:247] (write_settings)
2012-Dec-23 22:11:32.677 INFO core Closing Dwarf Therapist normally [src/mainwindow.cpp:258] (closeEvent)
That is the computer I need it to work on, any ideas on how to get it to work there?
I just tired building the default branch from splintermind-attributes on Linux and it failed with this error.I was able to build it using a different distro.
It works there but not on my 64bit computer.
That is the computer I need it to work on, any ideas on how to get it to work there?
Okay I figured out the problem.I just tired building the default branch from splintermind-attributes on Linux and it failed with this error.I was able to build it using a different distro.
It works there but not on my 64bit computer.
That is the computer I need it to work on, any ideas on how to get it to work there?
Saw you were having trouble, I just managed to bypass the exact same thing a few weeks back. Found the solution here (http://"http://www.bay12forums.com/smf/index.php?topic=118567.msg3845991#msg3845991"). Simple as adding a line to src/laboroptimizer.cpp with any text editor prior to running through the building process.
Good Luck!
args << "Dwarf_Fortress"; // 0.31.05+
proc->start("pidof", args);
proc->waitForFinished(1000);
if (proc->exitCode() == 0) { //found it
QByteArray out = proc->readAllStandardOutput();
QString str_pid(out);
m_pid = str_pid.toInt();
I can see that there is no check for there being multiple processes with "Dwarf_Fortress" in the name there and it fails trying to read a non-existent process because of that.Error: Multiple Running Dwarf Fortresses Detectedor
Please close all but one Dwarf Fortress process and try to connect again.
Error: Multiple Running Dwarf Fortresses Detected
Please select the correct process from this list.
there will probably be some bugs with this version as quite a lot was updated and adjusted, especially for a few memory leaks. just let me know in as much detail as possible and i'll get things fixed up when i can.Any chance you could address the lack of a check for multiple detected processes in Linux I mentioned in my previous post?
yes i've read your post and i'm aware of the issue. ideally it may be better to remove the dependency on pidof in the first place since it's been pointed out that it's not available on all flavours of linux.There is also "ps aux" though its output will need some parsing and filtering.
update for the linux multiple processes and manager/leader issues. the role issue is minor, you can update it yourself by editing the etc/game_data.ini and changing "Leader\Manager" to "Leader/Manager" if you don't want to download the file again.Have you pushed those changes to the repository?
Download // Project Home // Full Patch Notes (http://code.google.com/r/splintermind-attributes/)
update for the linux multiple processes and manager/leader issues. the role issue is minor, you can update it yourself by editing the etc/game_data.ini and changing "Leader\Manager" to "Leader/Manager" if you don't want to download the file again.Have you pushed those changes to the repository?
Download // Project Home // Full Patch Notes (http://code.google.com/r/splintermind-attributes/)
I don't see anything new there.
It was not showing up when I checked before.update for the linux multiple processes and manager/leader issues. the role issue is minor, you can update it yourself by editing the etc/game_data.ini and changing "Leader\Manager" to "Leader/Manager" if you don't want to download the file again.Have you pushed those changes to the repository?
Download // Project Home // Full Patch Notes (http://code.google.com/r/splintermind-attributes/)
I don't see anything new there.
yes the repository has been updated (http://code.google.com/r/splintermind-attributes/source/detail?r=096c2cf9fa3ecedf437d5356f232f698e80b3396)
QMake version 2.01a
Using Qt version 4.8.4 in /usr/lib/qt4
No valid memory layouts found in the following directories... () [src/dfinstance.cpp:106] (DFInstance)
This means Dwarf Therapist did not find the memory layouts from the "etc" directory located in the root of the directory you cloned the repository into.cd /path/to/bin/release
./DwarfTherapist
that "cd"s to the correct directory before starting "DwarfTherapist" and put it in you path if you want to start Dwarf Therapist with a single command.new version is ready forreleasetesting! ;)
new version is ready forreleasetesting! ;)
I'm loving the new version! It makes managing artifact production in a large fortress SO much easier.
As my fort and projects get bigger, its only DT and DFHack that reduce the grind burden and allow me to continue to enjoy playing the game. Thank you so much splinterz. Happy New Year to you, and best wishes for 2013!
BTW, traits and attributes are without any effect on quality of items produced by legendary dwarves.
I feel I should step into the discussion to say some things.
First of all, splinterz's above quote is correct. I've not changed the README however my current version of DGC still uses the old formula. (though refactored!)
This formula assumes that information in the wiki is correct, and without seeing more well documented tests with evidence I think they are correct. Attributes get raised by using skills and I believe thistleknot used dwarves from two large fortresses which would have seen attribute growth.
The DGC formula takes an attribute that falls within the generated range and maps it from 0-100. This roughly is how much of the population this is better than. If it's 80% it means that given 100 generated dwarves this will be above ~80 of them.
This is a very good formula to use when embarking! However it suffers huge problems as soon as you get immigrants, babies or any of your dwarves do anything since attributes will deviate from the generated averages.
If you have a very large fort you don't want to know how good your dwarves are above the generated average, you want to know how good they are in relation to all your other dwarves. Hence, two formula are needed, one for embark and one afterwards.
A third formula may be useful and can also be used on any other creatures. This is to say that attributes are between 0-5000 so weight all attributes by dividing by 500. 100 will be the maximum value possible and 0 the minimum.
So yeah, I'm planning on having all three formula in the next release of DGC. Hopes this info helps people! :)
to try and remove the process of checking out the source and compiling manually for linux users, i've got a dwarf therapist package for you to try out. it seems to work alright on my flavour of linux, but i'd like to get some more people to try it out before i start building a linux package consistently in my releases.I have been experimenting with doing that as well for the Linux version of Mephs Masterwork mod.
download it here (http://rapidshare.com/files/1018477247/dt_linux%20v19.1.tar.gz)
extract, and run with the DT script inside. let me know if anything explodes or if you have other ideas on a packaging up a linux release (i really don't know what i'm doing haha)
to try and remove the process of checking out the source and compiling manually for linux users, i've got a dwarf therapist package for you to try out. it seems to work alright on my flavour of linux, but i'd like to get some more people to try it out before i start building a linux package consistently in my releases.I have been experimenting with doing that as well for the Linux version of Mephs Masterwork mod.
download it here (http://rapidshare.com/files/1018477247/dt_linux%20v19.1.tar.gz)
extract, and run with the DT script inside. let me know if anything explodes or if you have other ideas on a packaging up a linux release (i really don't know what i'm doing haha)
The first version of mine is in the latest Linux version, 2c, of Masterwork.
I tried to include all the libraries that are version dependent or need to be 32bit in mine to make it easy for others to use.
I did find that a 32bit build could not detect the users QT theme on a 64bit computer but it otherwise worked fine.
I will look at yours when I get home and see if I see anything obvious wrong with it.
Hopefully you did not build on Ubuntu 12.04 or later, or a recent Fedora because they use a newer glibc (eglibc), 2.15, than many distros.
This means programs built on them won't work on many peoples Linux installs.
You only need to go back to Ubuntu 11.10, that has glibc 2.13 which should work unless someone has not updated their Linux install in several years.I will look at yours when I get home and see if I see anything obvious wrong with it.
Hopefully you did not build on Ubuntu 12.04 or later, or a recent Fedora because they use a newer glibc (eglibc), 2.15, than many distros.
This means programs built on them won't work on many peoples Linux installs.
ah dammit, i think it was on ubuntu 12.10.. i'll have to get an older version then and recompile, thanks for the heads-up. as for the method, i'm just packaging the qt libraries indicated after running ldd on the executable, and using a script to set the ld_library_path. from all the qt documentation i've read it seems this is the most flexible (and simple) solution.
for the ptrace kernel hardening issue i read somewhere on the forums here about using a script to launch therapist and then fortress as a work around. however i'm not sure if you can daisy chain multiple things like stonesense and dfhack into it as well.I put some documentation on ways to allow ptrace in the Linux instructions I wrote for Masterwork.
Here is what I have about allowing ptrace.for the ptrace kernel hardening issue i read somewhere on the forums here about using a script to launch therapist and then fortress as a work around. however i'm not sure if you can daisy chain multiple things like stonesense and dfhack into it as well.I put some documentation on ways to allow ptrace in the Linux instructions I wrote for Masterwork.
I will post them here when I get home, I can't get at them here.
Depending on your kernel version and build settings you may need to enable Dwarf Therapist to use ptrace on other processes.
You may get a error like this
ptrace attach: Operation not permitted
or this
ptrace: Permission denied
in your terminal when you run Dwarf Therapist if you are experiencing this problem.
If your kernel does not have an extra LSM enabled or you are running the Yama LSM (Ubuntu and others) you can enable ptrace by running this command as root in the "MasterworkDwarfFortress/Utilities/Dwarf_Therapist" directory.
sudo setcap cap_sys_ptrace=ep DwarfTherapist
This will allow the DwarfTherapist executable to ptrace other processes but will not turn off ptrace protection for the rest of your system.
If your kernel is running SELinux (Fedora and others) you can enable ptrace by running this command as root.
setsebool deny_ptrace 0
This turns off all ptrace protection, ptrace protection will be reactivated if you reboot or run "setsebool deny_ptrace 1" as root.
It is also possible to completely turn off ptrace protection when running Yama but it is not necessary to do that.as for the method, i'm just packaging the qt libraries indicated after running ldd on the executable, and using a script to set the ld_library_path. from all the qt documentation i've read it seems this is the most flexible (and simple) solution.Your script looks fine but I thought I would show you the one I am going to use in future Masterwork Linux releases.
#!/bin/sh
appname="DwarfTherapist"
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
cd "$dirname"
LD_LIBRARY_PATH="$dirname/libs":$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
$dirname/$appname "$@"
It will work no matter what your current working directory is when you start it.
Could someone point me to a resource that shows the mapping of labors to the indices used in an exported custom_professions.dtp? (I can read code or human, doesn't matter.)
I can extract what I'm looking for by brute force, but a clue would save some time. :) Thanks.
@arclance - well i've got the older version of ubuntu installed to recompile. having some nasty issues getting qt upgraded to 4.8.4 so i may have to abandon that and just package with 4.7.4. thanks for the script, that's a bit more robust. i'll have to try out the setcap method, although it would be nice to allow DT to run without root permissions..The setcap command does not run Therapist is just marks the executable as "allowed to use ptrace".
i realize setcap doesn't run therapist, however i'm forced to run therapist as root after running setcap it appears. same as another user described here (http://code.google.com/p/dwarftherapist/issues/detail?id=438&q=ptrace).@arclance - well i've got the older version of ubuntu installed to recompile. having some nasty issues getting qt upgraded to 4.8.4 so i may have to abandon that and just package with 4.7.4. thanks for the script, that's a bit more robust. i'll have to try out the setcap method, although it would be nice to allow DT to run without root permissions..The setcap command does not run Therapist is just marks the executable as "allowed to use ptrace".
You can run it as a regular user and it will work, you just need to be root to use the setcap command.
You could also build in Debian Testing and get glibc 2.13 and QT 4.8.2.
It not 4.8.4 but Debian is not quite as gun ho about updating core packages as Ubuntu.
The relevant package names are the same.
I put in pretty much everything but the X11 stuff for now, you should use the system version of those and they can be 64bit.can you elaborate on how you determined which shared libraries to package?
Tryi realize setcap doesn't run therapist, however i'm forced to run therapist as root after running setcap it appears. same as another user described here (http://code.google.com/p/dwarftherapist/issues/detail?id=438&q=ptrace).@arclance - well i've got the older version of ubuntu installed to recompile. having some nasty issues getting qt upgraded to 4.8.4 so i may have to abandon that and just package with 4.7.4. thanks for the script, that's a bit more robust. i'll have to try out the setcap method, although it would be nice to allow DT to run without root permissions..The setcap command does not run Therapist is just marks the executable as "allowed to use ptrace".
You can run it as a regular user and it will work, you just need to be root to use the setcap command.
You could also build in Debian Testing and get glibc 2.13 and QT 4.8.2.
It not 4.8.4 but Debian is not quite as gun ho about updating core packages as Ubuntu.
The relevant package names are the same.
sudo setcap cap_sys_ptrace=eip DwarfTherapist
That sets all the ptrace premissions possible, maybe it needs more than "ep" to work.sudo getcap DwarfTherapist
to check if the setcap command worked.so far the 4.8.4 libraries aren't working; it's not decorating the window/graphics properly (looks like windows 95 :D) maybe something went wrong when compiling the libraries, i don't know yet.Do you have a QT theme set on that system?
I used "ldd" on the "DwarfTherapist" executable to see what it depended on and copied them all (following links and renaming) to a "libs" folder.QuoteI put in pretty much everything but the X11 stuff for now, you should use the system version of those and they can be 64bit.can you elaborate on how you determined which shared libraries to package?
I use the branch 16.1 and noticed something rather annoying. When I sort by skill, instead of the current XP for that skill, it actually sorts by a routine using the current level in that skill and stats to determine, who is the best candidate for that labour. It would be fine, except this routine doesn't take into account the skill rates. I play a mod with heavy emphasis on castes and the learning rates are in the 50-300 range, so they matter even more than stats.
@arclance: well it turned out that i had to recompile the libraries for qt, seems i was missing some of the prerequisites before i compiled the first time. looks like everything is running well without funky graphics anymore. i had to slightly modify the script to surround the last line with" marks when i had a space in the folder name. just something to be aware of.That does not work for me, I get a "Segmentation fault".
i've packaged up another version with the qt 4.8.4 libraries as well as every other system library ldd reported for more testing, so if anyone wants to try it out, here it is:
Download Dwarf Therapist Linux v19.1 (http://rapidshare.com/files/1897783581/dt_linux_v19.1.tar.gz)
_linux_v19.1_2/dt_linux_v19.1$ ./DT
GNU gdb (GDB) 7.4.1-debian
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /media/Linux_Data/Dwarf_Fortress/Utilities/DwarfTherapist/dt_linux_v19.1_2/dt_linux_v19.1/DwarfTherapist...(no debugging symbols found)...done.
(gdb) run
Starting program: /media/Linux_Data/Dwarf_Fortress/Utilities/DwarfTherapist/dt_linux_v19.1_2/dt_linux_v19.1/DwarfTherapist
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Program received signal SIGSEGV, Segmentation fault.
0xf6b7619a in __libc_start_main ()
from /media/Linux_Data/Dwarf_Fortress/Utilities/DwarfTherapist/dt_linux_v19.1_2/dt_linux_v19.1/./libs/libc.so.6
(gdb) bt full
#0 0xf6b7619a in __libc_start_main ()
from /media/Linux_Data/Dwarf_Fortress/Utilities/DwarfTherapist/dt_linux_v19.1_2/dt_linux_v19.1/./libs/libc.so.6
No symbol table info available.
#1 0x08063411 in _start ()
No symbol table info available.
(gdb)
export QT_PLUGIN_PATH=
in your launch script?@arclance: well it turned out that i had to recompile the libraries for qt, seems i was missing some of the prerequisites before i compiled the first time. looks like everything is running well without funky graphics anymore. i had to slightly modify the script to surround the last line with" marks when i had a space in the folder name. just something to be aware of.That does not work for me, I get a "Segmentation fault".
i've packaged up another version with the qt 4.8.4 libraries as well as every other system library ldd reported for more testing, so if anyone wants to try it out, here it is:
Download Dwarf Therapist Linux v19.1 (http://rapidshare.com/files/1897783581/dt_linux_v19.1.tar.gz)
With gdb I get this backtrace.Code: [Select]_linux_v19.1_2/dt_linux_v19.1$ ./DT
GNU gdb (GDB) 7.4.1-debian
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /media/Linux_Data/Dwarf_Fortress/Utilities/DwarfTherapist/dt_linux_v19.1_2/dt_linux_v19.1/DwarfTherapist...(no debugging symbols found)...done.
(gdb) run
Starting program: /media/Linux_Data/Dwarf_Fortress/Utilities/DwarfTherapist/dt_linux_v19.1_2/dt_linux_v19.1/DwarfTherapist
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Program received signal SIGSEGV, Segmentation fault.
0xf6b7619a in __libc_start_main ()
from /media/Linux_Data/Dwarf_Fortress/Utilities/DwarfTherapist/dt_linux_v19.1_2/dt_linux_v19.1/./libs/libc.so.6
(gdb) bt full
#0 0xf6b7619a in __libc_start_main ()
from /media/Linux_Data/Dwarf_Fortress/Utilities/DwarfTherapist/dt_linux_v19.1_2/dt_linux_v19.1/./libs/libc.so.6
No symbol table info available.
#1 0x08063411 in _start ()
No symbol table info available.
(gdb)
What is the purpose of theCode: [Select]export QT_PLUGIN_PATH=
in your launch script?
You can download my build here if you want to look at it. (https://dl.dropbox.com/u/69178231/Dwarf_Therapist/Dwarf_Therapist_19.1_arclance.tar.gz)
the plugin_path was recommended on another forum, but i don't believe it's necessary.I looked it up and it looks like people include it to stop QT from loading parts of KDE.
could the error be a 32/64 bit issue?Could be a 32/64 bit issue.
i just tried out your build, and i can't launch it either i get this error:That could be caused it trying to load parts of your QT build that I did not know need to be included in the "libs" folder.
Cannot mix incompatible Qt library (version 0x40704) with this library (version 0x40802)
export QT_PLUGIN_PATH=""
to my launch script to see if does anything.#!/bin/sh
appname="DwarfTherapist"
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
cd "$dirname"
LD_LIBRARY_PATH="$dirname/libs":$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
strace $dirname/$appname "$@"
and post the output here so I can see what it is trying to load?the plugin_path was recommended on another forum, but i don't believe it's necessary.I looked it up and it looks like people include it to stop QT from loading parts of KDE.
I would leave it in then, it should not cause any problems if that is the case.could the error be a 32/64 bit issue?Could be a 32/64 bit issue.
What did you build 32 or 64bit?
If you made a 32 bit build and included a 64bit library or included 32bit libs in a 64bit build it might just crash like that.
It usually complains about the "ELF Class" being wrong if you do that though.
If you built 32bit did you cross-compile or not?
I don't know what kind of shenanigans that could cause since I have never done it.i just tried out your build, and i can't launch it either i get this error:That could be caused it trying to load parts of your QT build that I did not know need to be included in the "libs" folder.
Cannot mix incompatible Qt library (version 0x40704) with this library (version 0x40802)
Could you try addingCode: [Select]export QT_PLUGIN_PATH=""
to my launch script to see if does anything.
If that does not work could you run Dwarf Therapist with this scriptCode: [Select]#!/bin/sh
and post the output here so I can see what it is trying to load?
appname="DwarfTherapist"
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
cd "$dirname"
LD_LIBRARY_PATH="$dirname/libs":$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
strace $dirname/$appname "$@"
It might also be a problem with your QT build (possibly just because it is a newer version than mine) or from the little research I did from having parts of KDE installed.
I have tested my build on Fedora 14, Xubuntu 11.10, Debian Testing, and Debian Unstable so I suspect it has to do with your QT version or build options.
[Paths]
Libraries = ./libs
Plugins = ./libs/qt4/plugins
^
From the strace I think the problem happens when it loads qt plugins from "qt4/plugins" (in "/usr/lib/i386-linux-gnu/qt4/plugins" on you computer) from your installed QT.
Because your install is of a different enough version it is unable to do that.
I have found that it also needs "libQtSvg.so.4", "libQtDBus.so.4", and "libQtXml.so.4" which did not show up in my ldd from the strace.
Here is a new version which I think should not use your system QT libs or plugins anymore. (https://dl.dropbox.com/u/69178231/Dwarf_Therapist/Dwarf_Therapist_19.1_arclance_3.tar.gz)
I put the "qt4/plugins" folder in the libs folder and made a qt.conf file to make DwarfTherapist only load the plugins from that folder.Code: [Select][Paths]
Libraries = ./libs
Plugins = ./libs/qt4/plugins
@Nkosi_SW: i've been able to reproduce both the issues you've brought up and i'll should have a fix out soon
I noticed two things while playing a testfort. Dont know if known issues or not.
1: Alchemy Savant has 0 xp in Alchemy? Description says he is good in alchemy, the tab shows no experience in it.
- The alchemy savant has natural skill 10 in alchemy. He arrived with the skill. Therapist shows NO skill and NO Exp in the tab. (there should be a black box showing skill in the tabs, but it is blank.) Mouseover tooltip on the dwarf itself will show that he is lvl10 in alchemy.
2: Legion dwarf has 2000 strength, is "weak" for a legion dwarf (max 5000) Is protrait in the therapist as weak, while being twice as strong as other dwarves.
- Legion dwarves are way stronger then normal dwarves. But since the unit description compares inside the caste, they are weak even with 2000-3000 strength, because their maximum is 5000. In the Therapist he is shown as weak as well, while being the strongest dwarf by far in the fortress. Maybe the Therapist should show dwarves on a relative scale from 0 to 5000.
Ok, thanks for the quick answer. First one is an oversight that is irrelevant to vanilla DF, so it was overlooked and will be fixed. Good. Second one is a design choice to meet ingame description with therapist. Understandable from my point of view as well. I just wanted to report both, because I didnt knew if it was a design choice, or not.no worries, thanks for the reports :)
Would it be possible to make the Professions pictures editable?if you meant the custom professions, you can to a degree. if you meant the default profession icons, yes it's possible. right now they're packaged as an internal resource, but i suppose i could just leave them in a folder and they could be replaced.
Sorry if anyone else asked, but - Therapist seems to stop showing Migration waves after the 10th. Once it reaches the 10th it just starts adding new dwarves to the bottom of the 10th wave.which Therapist / OS are you using?
Is there any way to make the Therapist show waves after 10, or should I just start marking the last dwarf in the wave with a nickname to know where the next migrant wave starts ?
I think I've found a problem with Highest Moodable Skills, but the problem may be with DF itself rather than DT. Anyway, I thought I'd post here first and get people's opinions.
I had a dwarf who was Legendary +5 in Armouring and Metalcrafting (as well as a couple of other non-moodable skills), but I deliberately manipulated his experience so that his Armouring had higher skillpoints (31,332 to Metalcrafting's 30,838), and DT dutifully reported that the highest moodable skill was Armouring.
However, when that dwarf had a mood, he created a Metalcraft artifact (an earring).
Does anyone have an idea why this happened? Does DF take something besides numerical skill level in to account when determining Highest Moodable Skill?
I have screenshots and a save if anyone needs to have a look.
was it possible that his armouring skill had become rusty?
edit: looking at the wiki, armorer and metalsmith both have the same chance to have a mood, however it also states that the deciding factor is the dwarf's actual profession (not the custom profession) at the time the mood hits. it also doesn't say if 'highest' is determined by actual experience, or simply the rating (legendary +5).
check the actual profession of the dwarf when the mood hit?
I've had moods that didn't use the skill with the highest raw XP. Maybe it has something to do with the skill ID numbers.
was it possible that his armouring skill had become rusty?
Neither Armourer nor Metalcrafter skills were rusty.edit: looking at the wiki, armorer and metalsmith both have the same chance to have a mood, however it also states that the deciding factor is the dwarf's actual profession (not the custom profession) at the time the mood hits. it also doesn't say if 'highest' is determined by actual experience, or simply the rating (legendary +5).
check the actual profession of the dwarf when the mood hit?
When I deleted his custom profession, the profession shown was "Metalsmith". The wiki (http://dwarffortresswiki.org/index.php/Metalsmith) says this is shown when a dwarf has skills in more than one metalsmith catergory, so this is not much use.I've had moods that didn't use the skill with the highest raw XP. Maybe it has something to do with the skill ID numbers.
This is the crux of the matter. If DT is using highest raw XP to determine Highest Moodable Skill, but DF is using something else in certain situations, then we need to determine what criteria DF is using and duplicate it so DT accurately reports the Highest Moodable Skill.
Should I post in the Dwarf Mode forum asking for help about how DF determines Highest Moodable Skill in this situation? Would it help if I uploaded the save for you to have a look at splinterz?
version 19.2 has been released
definitely ask in the other forum as someone may have more insight as to what's happening.
i can poke around a bit if you upload the save.
maybe it's randomly choosing between the two skills?
version 19.2 has been released:I only see one small cosmetic problem so far.
Patch Summary
- added skill rates (experience bonuses) for castes. this includes a new column in the dwarf details, and tooltip information. normally this isn't visible at all in vanilla.
- fixed some formatting issues on the column headers and counts
- fixed alchemy skill and added missing military tactician skill (exclusively for mods)
- fixed the happiness column showing black squares instead of colors on the initial load
- fixed a crash when adding labors to an optimization plan
- fixed the scroll bars not returning to their saved positions after a fresh read
see the project home for full patch notes and more details on the skill rate experience bonuses.
Project Home // Download // Full Patch Notes (http://code.google.com/r/splintermind-attributes/)
Maybe the Therapist should show dwarves on a relative scale from 0 to 5000.Seconded. In the military tab there are a few columns with Agility, Recuperation and so on. They display a number from -20 to +20, but that's relative to their caste, so it isn't really telling me much when I have lots of castes and I have to use tooltips to see the real values. I don't want to sort by one of the stat columns, because I already sort by other things. Just having these columns display 0-00 (((stat + 25)/50) and 00 for >99) would be much more useful. I simply don't care about values relative to the average for that caste. It is absolute values that matter anyway.
I simply don't care about values relative to the average for that caste. It is absolute values that matter anyway.I have to agree with this at least on the military screen.
are you talking about attribute and trait default values? it was a mess tryi g to figure out the default trait values initially. no work was ever done to categorize the modded castes, everything is scaled against a normal dwarf.The military screen has a bunch of stats: Strength, Agility, Toughness, Endurance, Recuperation, Disease Resistance. The tooltips display them properly (I think), but the grid view shows some wacky values: {-11, -7, -3, 0, 6, 9, 13, 20}. In the picture below, sorted by Disease Resistance and the order is correct, but the values tell me nothing and are sometimes out of order. I'm guessing they are based on things like "incredibly strong" in the description, which are relative to castes. Having absolute values, such as ((stat + 25) / 50) and 00 for > 99, would be much more useful. Another grid view with just stats, or adding things like Focus, Kinesthetic Sense and Spatial Sense to the military grid view would also be nice. If you want relative values, it would be more useful to base them on average for all current citizens, not castes they belong to.
To add to that it would be nice to have a grid view that shows what cast each dwarf is so you don't have to read their tooltips one at a time.are you talking about attribute and trait default values? it was a mess tryi g to figure out the default trait values initially. no work was ever done to categorize the modded castes, everything is scaled against a normal dwarf.The military screen has a bunch of stats: Strength, Agility, Toughness, Endurance, Recuperation, Disease Resistance. The tooltips display them properly (I think), but the grid view shows some wacky values: {-11, -7, -3, 6, 9, 13, 20}. In the picture below, sorted by Disease Resistance and the order is correct, but the values tell me nothing and are sometimes out of order. I'm guessing they are based on things like "incredibly strong" in the description, which are relative to castes. Having absolute values, such as ((stat + 25) / 50) and 00 for > 99, would be much more useful. Another grid view with just stats, or adding things like Focus, Kinesthetic Sense and Spatial Sense to the military grid view would also be nice. If you want relative values, it would be more useful to base them on average for all current citizens, not castes they belong to.
tweaked the skill/labour column sorting to weight skill rates and skill level equally??? I haven't seen the code that does this, but this sounds like an incorrect way to sort by a skill, to put it politely.
Sorting by skill is still bogus. All it does is it puts those with a selected labour above those with it deselected, but otherwise it is still useless and a regression. I remember some earlier version of Dwarf Therapist that at least were sorting skills by XP.Quotetweaked the skill/labour column sorting to weight skill rates and skill level equally??? I haven't seen the code that does this, but this sounds like an incorrect way to sort by a skill, to put it politely.
The correct way is to divide the dwarves into two groups: labour enabled or disabled, in addition to any other grouping of them (by migration wave or whatever). Then sort each sub-group the following way:This way dwarves who will take fewer jobs to make it to legendary + 5 are listed higher, which is exactly what I want. These "Related Roles" and their arbitrarily weighted percent values are bogus. As an example, when I sort by "Marksdwarf", I have a dwarf with 9 crossbow and 85% skill rate on top with 99% and my best marksdwarf with 230% learning rate and 80k XP is listed as 12th with 45% "Related Roles". This is a dwarvenly stupid way to show me who is best for the job!
- Put Legendary + 5 on top and don't order them if you want to hide vampires. Otherwise skip this part.
- If skill_rate is set to 0, don't divide by 0 and just put those dwarves last, but sort them by any XP they may have.
- Sort the rest by minimum of (29000 - current_XP ) / (real_skill_rate) If the formulas on how stats affect XP per job and speed of the job are known, those should be factored into the real_skill_rate. 29000 is the XP needed for Legendary +5. If a skill rate is unknown, assume the same as others with that caste or 100% as a last resort.
the way Splinterz Dwarf Therapist is setup is to sort things based on the calculated role %.I've noticed and am very unhappy about it. I'm trying to convince splinterz to fix it. How come no one noticed this bug before?
There is an option inside that allows you to sort by skill exp (i.e. the old way of doing it).I haven't found it, but setting everything except skill to low weights alleviated the problem.
we know some attributes train skills faster & some traits give dwarf's happy thoughts from doing that job.Where is this information? Wiki is useless as usual and I haven't been able to find any conclusive research on the forum.
we know some attributes train skills faster & some traits give dwarf's happy thoughts from doing that job.
Where is this information? Wiki is useless as usual and I haven't been able to find any conclusive research on the forum.
Traits:
cannot be modified in-game.Verify
affect which social skills gain experience (if the dwarf has X trait it will not gain experience in X skill) at all.
have other in-game effects that can be useful for certain professions.
give thoughts when performing certain activities.
No. A way to search for a particular trait or material / item preference or sort by them would be useful. Forcing bogus "Related Roles" based on some arbitrary weights is counter-productive. Those values mean nothing and people trust them, so they are misleading. I was mislead by them!
For your CMD example, at the very least you want those weights set per-skill and not globally, but a way to sort the list of dwarves by "finds helping others very rewarding" and "devoted to duty" would be better.
wow you're really going off on this stuff eh?Yes, I tend to feel strongly and overreact about some things. Especially when they are wrong and it is so obvious that they shouldn't be wrong in the first place. In case of Dwarf Therapist I respect your work on maintaining it, but not the decision to port the roles from dwarven guidance councillor and make them so important.
alright so first, turn off the role sorting in the roles tab and see if that helps.I deselected "Include role ratings when sorting labour columns" and "Include role ratings when sorting skill columns" and it didn't help. Well, after changing the weights it works slightly better.
if you've got any suggestions for changes to the default roles, by all means let me know and i'll make adjustments.Other than gutting it out completely because the system is inherently wrong and adjustments won't help much? Well, these are some ideas, but they will make comparing suitability to different roles impossible:
what exactly is your problem with roles that makes them so bogus? is it the default weights? the calculations?I already explained that you cannot just make a weighted arithmetic average out of skills and stats, because it is meaningless. Even if you could, the weights are unknown. For things like probability of a disease based on blood pressure, temperature, weight, age and so on you can use optimisation or data mining to find something that works, but here there doesn't seem to be any data, just people and their preferences. The entire way of thinking that lead to introducing these roles is fundamentally wrong and based on wrong assumptions. A dead give-away was that you wanted to include skill rates with a weight, instead of tying them with current level of skill, as they no longer matter after Legendary +5.
you can find dwarfs by preference by using the preference window and clicking on a preference.Lol, this is kinda fun for jokes. I never explored that part of DT, because I never needed it for anything.
well, I disagree whole heartedly.Likewise.
Yes, a legendary dwarf does build faster. However, in my head. A dwarf who has higher strength when masonry uses strength http://dwarffortresswiki.org/index.php/v0.31:Mason to do masonry, I imagine the higher the strength, the faster it goes (I have no reference for this other than the wiki has attributes for certain skills).Keywords: "imagine" and "in your head". You have no evidence to back it up. I've seen skill levels do wonders to how fast something is done. Mining and cutting wood are the easiest to notice, but a legendary crafter will often barely enter the workshop when he is done. If stats have any influence on how fast the work is done, it is overshadowed by the skill anyway.
So I could have a legendary person doing the job, or I could have a BETTER dwarf in terms of mason attributes doing the job as well in hopes that he would be a better fit when he becomes legendary.I can agree with you on this: a very strong and agile worker is better at the same skill level, because he walks faster both when and when not carrying heavy materials. Even if something is done slightly faster at legendary skill thanks to high stats, it still won't matter as much as say, efficient fort layout.
see wiki http://dwarffortresswiki.org/index.php/DF2012:SkillYou think I haven't seen it? This is useless. There are no formulas or numbers or links to research with them.
Keywords: "imagine" and "in your head". You have no evidence to back it up. I've seen skill levels do wonders to how fast something is done. Mining and cutting wood are the easiest to notice, but a legendary crafter will often barely enter the workshop when he is done. If stats have any influence on how fast the work is done, it is overshadowed by the skill anyway.
I deselected "Include role ratings when sorting labour columns" and "Include role ratings when sorting skill columns" and it didn't help. Well, after changing the weights it works slightly better.if you have the role stuff off of the labor columns the weights don't affect anything. it's purely sorting on the rating and the skill rate. the problem is that it's combining those two elements, which you disagree with. i'll run some tests to compare with your suggested method and consider changing it, since i think it was you who asked for it in the first place.
For most civilian labours, like Masonry use just XP and skill rates, I've already given you the formula.according to the wiki, these labors don't exclusively use only skill rates/xp. yes it's assumed that skills use the attributes associated with them. not every skill may be accurate. it's true that most, if not all the roles are based on wiki/forum information found because i've got no other data. if you're saying the wiki is full of shit, well i guess i'd like a few other people to back that up. again it sounds like you're have a major issue with the default roles right? have you overridden most of them, or you're just upset because you feel it misleads new users?
Include a sortable grid view with stats. (The one we have works for sorting, but not displaying stats.)what stats aren't capable of sorting? do you mean attributes?
Include a sortable grid view with traits. That way people can sort by helpfulness, choose a dutiful dwarf near the top of the list and make her the CMD.sure, this isn't an issue, you can already do this yourself. i can include a view in the default set though, that's a good idea.
I already explained that you cannot just make a weighted arithmetic average out of skills and stats, because it is meaningless. Even if you could, the weights are unknown. For things like probability of a disease based on blood pressure, temperature, weight, age and so on you can use optimisation or data mining to find something that works, but here there doesn't seem to be any data, just people and their preferences. The entire way of thinking that lead to introducing these roles is fundamentally wrong and based on wrong assumptions. A dead give-away was that you wanted to include skill rates with a weight, instead of tying them with current level of skill, as they no longer matter after Legendary +5.you don't need to know the weights, the weights are whatever a user decides. the system doesn't care. you love your skills, go ahead, weigh them as 10x that of everything else. maybe you want to override that on a specific role, or leave skills out of the next role. what's so wrong with that? what's wrong with the design that a user should be able to decide what to value more for a particular job?
Give warning to any tooltips with the roles that the values there are arbitrary and should not be relied upon.really now, if you can't compose yourself enough to have a decent discussion i'll be hard pressed to keep taking you seriously.
I think I see why we disagree. When selecting a Dwarf for a job, I think you ask "Which one of you will work the best what Legendary +5?" For me the question is "Which one of you will get to Legendary +5 the fastest and wasting the least materials?"i think this is key. you don't want attributes, traits or preferences in your roles at all. so is the system totally flawed in it's concept, or are you just unable to figure out how to make it work for you?
I think I see why we disagree. When selecting a Dwarf for a job, I think you ask "Which one of you will work the best what Legendary +5?" For me the question is "Which one of you will get to Legendary +5 the fastest and wasting the least materials?"
Though I disagree with Maklak's argument of the concept, I do see his point about caste skill rates being weighted more highly than attributes and traits. Over the course of a fortress's lifetime, most dwarves, barring the rarity of strange moods, will reach legendary through sheer effort, repeating dozens of reactions to produce goods in order to gain enough experience. This is the most time-consuming portion of training a dwarf to legendary, and it is to this portion that skill rates have the highest contribution, and so should be duly considered when assigning unskilled dwarves belonging to a caste-system with differing skill rates.personally i agree completely with skills and their rates being worth more than attributes, traits and preferences. i usually set the skill weight very high and drop the others much lower to achieve this. the nice thing about applying the skill rates with a weight is it's easy to allow the user to set a weight themselves. the bad thing is that it adds more ui clutter, especially if the skill rate weight is allowed to be overridden for every skill! however Maklok's suggestion may give better results for the ratings, i need to test it out.
Of course, attributes, traits, and preferences have significant roles as well, and so must also be weighted (Especially as the majority of DF games played have no differing skill rates). As such, perhaps an option to weigh/not weigh skill rates would serve as a compromise?
In the end, it is your effort splinterz, and so it is entirely up to you how you want Dwarf Therapist to work. Regardless of what happens, I will greatly appreciate the end result. Thank you! :)
no it's not doing that, and that's one of the major problems he's got. i used an equally weighted average between the skill experience and the skill rate, because i figured i wouldn't want a low level with high skill rate jumping up over a higher skill level with lower rate. this may not have been the best decision, which is fine! that's the reason there's patch notes and i asked for feedback, so it can be adjusted, because i don't get to play to know, i'm always coding :)QuoteI think I see why we disagree. When selecting a Dwarf for a job, I think you ask "Which one of you will work the best what Legendary +5?" For me the question is "Which one of you will get to Legendary +5 the fastest and wasting the least materials?"... skill rating * % of skill increase rating. Example, if a wood savant (not sure if wood savants learn carpentry faster) has a 130% increase in skill learning, than the skill % * 130% would be the new skill rating...
i used an equally weighted average between the skill experience and the skill rate, because i figured i wouldn't want a low level with high skill rate jumping up over a higher skill level with lower ratecan you give an example? This intrigues me, as I too wouldn't want a higher skilled dwarf to be outranked by a lower skilled dwarf with a higher learning rate.
yeah i explained it poorly, it works more like a bonus now if it helps to think of it that way. since the rates can range from 0 to 500% i was tentative in applying it directly to the skill level/xp by doing something like current xp/29k * skill rate. you can easily have situations where a lower level with a high skill rate will rank higher than an almost maxed skill with a normal skill rate.Quotei used an equally weighted average between the skill experience and the skill rate, because i figured i wouldn't want a low level with high skill rate jumping up over a higher skill level with lower ratecan you give an example? This intrigues me, as I too wouldn't want a higher skilled dwarf to be outranked by a lower skilled dwarf with a higher learning rate.
In my eyes, two equally skilled dwarfs would be outranked by the higher learning rate
I wouldn't mind a pre-made option for Raw XP in the same vein as the options for caste, migration wave, squad, etc. I liked the old behaviour because it allowed me to see who could be nudged from Dabbling general handydwarf to a Novice able to be taught the job as a trade (it just bugs me seeing old first-year skills hanging around at Dabbling. I wish Toady would make them rust away to nothing). Mostly this was used for Masonry, since it's one of those jobs that's both useful on everyone and better done by a skilled dwarf.for the option were you talking about another way to group dwarves? did i break one of them?
Speaking of workshop skill limits, have you made any headway on determining skill rust? There's pretty good evidence that at higher skill levels, rust doesn't work properly. The game doesn't display a (Rusty) note, but the skill is still treated as Dabbling for the purposes of workshop assignments. I don't know if this translates into quality loss the way 'proper' rust does, but it does make a mess of workshop profiles.
if(m_df->show_skill_rates()){
skill_rate_value = s->skill_rate() / 500; //skill rate is capped at 500%, default is 100%
aspect_value += skill_rate_value;
aspect_value /= 2.0f; //equally weigh skill rate gain and the actually skill rating, may need adjustment
}
if you have the role stuff off of the labour columns the weights don't affect anything. it's purely sorting on the rating and the skill rate. the problem is that it's combining those two elements, which you disagree with. I'll run some tests to compare with your suggested method and consider changing it, since I think it was you who asked for it in the first place.I agree with combining skill and skill rate, I just disagree with combining them incorrectly.
hey i've got no problem gutting the default roles if people think they're downright awful. you're the first one to complain so vehemently, and i'm willing to look past the blatant insults to listen to what you've got to say.Hey, I was restraining myself, damnit. Well, I guess some of what I said may have been seen as insults. Anyway, at my best I can provide lots of useful feedback and at my worst I get into arguments.
if you're saying the wiki is full of shit, well i guess i'd like a few other people to back that up. again it sounds like you're have a major issue with the default roles right? have you overridden most of them, or you're just upset because you feel it misleads new users?Well, I said that some info on the wiki is useless, but overall I think the wiki is good, it just doesn't have all the data and formulas, even those it used to have for 40d. Vague statements that "Archery affects ranged combat", when the research says it barely influences enemies' dodge chance or "These attributes are related to this skill" just don't tell me much when I need numbers and formulas for calculations. Don't tell me, this wasn't frustrating when you were implementing the hints for best roles.
Yes, I meant attributes. They are sorted correctly, they are just displayed with a few discrete values tied to descriptions in the character sheet and it can and should be improved. I already gave you an idea to just put numbers from 0 to 00. Another possibility is to find the minimum and maximum for current population and scale that from -20 to +20. The only downsides are that this will be weird for a small number of dwarves (could be remedied by say, having minimum be no greater than 700 and maximum no less than 1200) and that as the military progresses, the civilians will seem to regress.QuoteInclude a sortable grid view with stats. (The one we have works for sorting, but not displaying stats.)
what stats aren't capable of sorting? do you mean attributes?
you don't need to know the weights, the weights are whatever a user decides. the system doesn't care. you love your skills, go ahead, weigh them as 10x that of everything else. maybe you want to override that on a specific role, or leave skills out of the next role. what's so wrong with that? what's wrong with the design that a user should be able to decide what to value more for a particular job?There are default weights. My guess is that few users will be capable of improving them. I also don't think an aggregating function based on weighted arithmetic mean is much good here. However, after all this discussion, I'm inclined to agree that this system can be usable for some things, tweaked or even "disabled". Oh, and since I'm a user, this is a contradiction: "you don't need to know the weights, the weights are whatever a user decides".
speaking of wrong assumptions, in the role calculations, the raw level and experience are never used. it's capped at legendary +5, since for a job in DF higher than 20 doesn't matter. they are tied to the current level of skill, they're just valued equally (which i think i clearly mentioned may need adjustment).If the XP level for a Legendary +5 is listed as "29000+" or "MAX" and all those dwarves are treated as equals, I'm fine with it. However for two nearly identical dwarves, one of whom is 90% to next level and the other 10% to next level, the more advanced one should be higher. This is why I think sorting by (capped) XP rather than skill level would be a good idea.
So now you're insulting me back. I am serious, at least add this info about roles to the manual. Speaking of which, a manual for DT would be a good idea. It is easy to just use DT for labour management, but it has some more esoteric stuff. For example I've read somewhere that it is possible to make lists of skills and assign those lists to dwarves, which would be faster than clicking each square separately for each wave of migrants.QuoteGive warning to any tooltips with the roles that the values there are arbitrary and should not be relied upon.really now, if you can't compose yourself enough to have a decent discussion i'll be hard pressed to keep taking you seriously.
I had to think a bit on this one. The system has been working against me so far and I still say it is flawed in it's concept. There are some ways to aggregate functions: first normalise them, then use arithmetic, geometric or max / min methods. There is also a method with distance from an "I'm happy with this" spot. All of them have their own problems, if only in choosing weights that make sense.QuoteI think I see why we disagree. When selecting a Dwarf for a job, I think you ask "Which one of you will work the best at Legendary +5?" For me the question is "Which one of you will get to Legendary +5 the fastest and wasting the least materials?"I think this is key. you don't want attributes, traits or preferences in your roles at all. so is the system totally flawed in it's concept, or are you just unable to figure out how to make it work for you?
Of course, attributes, traits, and preferences have significant roles as well, and so must also be weighted (Especially as the majority of DF games played have no differing skill rates). As such, perhaps an option to weigh/not weigh skill rates would serve as a compromise?They are either different and matter or uniform and don't matter. It is automatic; making an option for this would be pointless, except maybe to avoid dwarves with low skills being above those with higher skills, but poor learning rates.
That's why skill ratings (before being combined into a role rating) take into account the caste's skill rate learning. I believe it's something like skill rating * % of skill increase rating. Example, if a wood savant (not sure if wood savants learn carpentry faster) has a 130% increase in skill learning, than the skill % * 130% would be the new skill rating before being combined with attributes and traits and preferences % before being combined into an overall percent.This is wrong, because for very low skill the skill rate wouldn't matter, while an unskilled wood savant is obviously a better choice for a carpenter than a Novice, since he will get to Legendary +5 faster. You want to take ((29000 - current_XP) / skill_rate), since that's all the skill rates affect in the end. Now, for this not to screw up your current system and assuming you want to normalise to <0,1> at 100 skill rate, where 1 is more desired than 0, you'd have to take (1 - ans/290.0). So this should work:
int XP = (current_XP > 29000) ? 29000 : current_XP;
int rate = (skill_rate < 1)? 1: skill_rate; // 0 or 1 doesn't really matter.
double jobs_left = (29000 - XP) / rate; // Ignore division by 60.
double normalised_XP = 1.0 - jobs_left/290.0; // This can be as low as -28999, but you don't want to train a skill with 1% learning rate anyway.
// For things like 0 skill and 30% learning rate this will be -2.3333, which is quite sane, but you might still want to "cap the bottom".
// For good learning rates, like 200%, this formula "pretends" that half the XP has already been generated.
Well, some edge cases, like a Legendary+5 at 1% learning rate and fast skill rust aren't considered, but for most things this should be fine.Creativity (in my experience, repeatedly, but I have not kept hard numbers leads to much higher quality works in Masons/Carpenters/Craftsdwarf's/Weaponsmiths etc., and Analytic Ability to higher quality meals and mechanisms. At least for moderately skilled dwarfs. Perhaps this effect disappears at Legendary+5?My own research inconclusively indicates that you are correct. I assumed the info for 40d about quality was still valid, because newer versions of it don't have a nice spreadsheet.
the nice thing about applying the skill rates with a weight is it's easy to allow the user to set a weight themselves.You might as well say that the nice thing in trying to emulate multiplication with weighted addition is that the user can adjust the weights himself. It just doesn't work that way. What you might do with your current system is to include weights for raw skill and the value that my formula spits out. That way it is easy to disable one of them, but for 100% learning rates they are synonymous anyway. Once you have access to the learning rates, using them for calculations and adding things to options are a low hanging friut.
there's been a lot of effort (myself and others) put into the branch, but the direction is always community driven. regardless of the amount of tact when providing feedback, i still appreciate it and try to make whatever changes are necessary.Thank you. I am more rude than I need to be, but it stems from me wanting DT to work better, for me at least.
no it's not doing that, and that's one of the major problems he's got. i used an equally weighted average between the skill experience and the skill rate, because i figured i wouldn't want a low level with high skill rate jumping up over a higher skill level with lower rate. this may not have been the best decision, which is fine! that's the reason there's patch notes and i asked for feedback, so it can be adjusted, because i don't get to play to know, i'm always coding.I've actually considered the problem of unskilled peasant jumping ahead of someone experienced, when the skill rates are different enough. On one hand, the dwarf who is skilled now can already produce better items faster, on the other a high skill rate will let someone else catch up and exceed his skill relatively quickly. My conclusion is to allow "jumping ahead" for these reasons:
Malak, I think you need to pull your head in a bit mate, as we say here in Australia. Coming in to a thread demanding that the volunteer developer change his code to what you want, questioning why nobody has noticed this obvious bug before (and therefore implying everyone else in the thread is an idiot), and generally using confrontational, aggressive and overbearing language is no way to win friends and influence people.I know I'm antagonising people and that this is a recurring pattern, no matter the social group. To date, I haven't found a solution to this problem. If I just wrote what I wanted to say, waited for two days, edited it and posted it then, this discussion might have looked differently, but what's done is done. There isn't even much room for "damage control".
current xp/29k * skill rate.Incorrect and I explained it above as well as gave the formula for determining who maxes out the skill the fastest. One way of looking at it is that XP rates generate "virtual XP".
it's also important to note that what's used in the roles doesn't have to be used for the sorting. they're calculated separately.I don't mind hints about roles in tooltips much, even those I disagree with. It is just that everything is sorted by them, but as someone already explained, the workaround is to set weights to 0 to everything except skills.
currently if the levels/xp are equal the higher rate will end up with a bonus and thus a higher rating.Well, I still have tooltips to hunt down a candidate for a job, but sadly they don't display XP rates for skills at 0. Even then, I have the bigger tooltips to guess the caste by description and check it in the big file in the RAWs if I have doubts, it is just time-consuming and inconvenient.
So if I'm reading this correctly [...] how does that make sense?It doesn't, that's part of the point I'm trying to make.
This is wrong, because for very low skill the skill rate wouldn't matter, while an unskilled wood savant is obviously a better choice for a carpenter than a Novice, since he will get to Legendary +5 faster. You want to take ((29000 - current_XP) / skill_rate), since that's all the skill rates affect in the end. Now, for this not to screw up your current system and assuming you want to normalise to <0,1> at 100 skill rate, where 1 is more desired than 0, you'd have to take (1 - ans/290.0). So this should work:
Code: [Select]
int XP = (current_XP > 29000) ? 29000 : current_XP;
int rate = (skill_rate < 1)? 1: skill_rate; // 0 or 1 doesn't really matter.
double jobs_left = (29000 - XP) / rate; // Ignore division by 60.
double normalised_XP = 1.0 - jobs_left/290.0; // This can be as low as -28999, but you don't want to train a skill with 1% learning rate anyway.
// For things like 0 skill and 30% learning rate this will be -2.3333, which is quite sane, but you might still want to "cap the bottom".
// For good learning rates, like 200%, this formula "pretends" that half the XP has already been generated.
btw, normalizing from 0 to 100, with 50 representing average is always the desired result.Well, you could simply multiply this by a 100, but it won't be enough if you want to get rid of negative values so much.
I don't see how one can get negative numbers (unless some castes have below 100 learning rates).Of course I can have learning rates below 100%. Just look at Masterwork Mod castes. https://lh4.googleusercontent.com/-PwhM3DFdPo8/UOJQ16NWd-I/AAAAAAAALkI/7vXBQLy85GQ/s1020/Caste%2520Guide.jpg Half of them have "Slow learner, 50% skills" for most skills. Part of the point of having "savant" castes is that they are good at something, but not much good at anything else. There is similar balance in the FoE mod I play, otherwise I'd have "Dwarves, only better". The negative normalised_XP represents "penalty XP". An unskilled Dwarf with 50% learning rates gets -1 (or -100 if you normalise to a 100), because -1 is twice as far from 1 as 0 is rom 1. By capping skill rates at minimum 100% you ignore that information, which is incorrect.
btw, we're working on introducing more attribute bins for modded games, so the attribute %'s scale to all castes (no more -20 to +20 squares drawn to each caste, but now a % from lowest possible to highest possible based by combining all castes into a super binary distribution). Each bin is factored by that castes frequency in the population, then a master bin layout is created (bin as in binary frequency distribution).I don't really understand any of that and neither wikipedia nor wolfram alpha has any info on "binary frequency distribution". It feels like an overly complex solution to a simpler problem. I would prefer to see real values, but if you want to go for maximum and minimum for all castes and scale the results to <-20, +20>, just remember to also find the minimum and maximum for current citizens. Some may rust below the racial minimum and soldiers are likely to exceed the normal racial maximum, at least for some attributes. I don't care about the frequency of castes, just that I can look and see who is the strongest among my population at a glance, without sorting by strength.
btw, I think who is currently best at a job is more important. If I want to create high quality items now, then I want to see who's best now. Naturally, learning rates should be considered, but... I think that as they are considered, they will eventually supplement and surpass my slower learning rate dwarf's.This is fully doable with your normalised, weighted arithmetic mean. Just have the weight for unmodified skill be an order of magnitude higher than for what my formula spits out. But, like I said, you'll easily notice out-of order skills in grid view (0 above 5 or whatever) and your factoring in attributes already does this sort of thing anyway. You won't notice a wood savant so easily when looking for a new carpenter. (Well, you would in masterwork, but in FoE citizens have no natural skills from their castes, just different learning rates.)
I'm not exactly sure what it's doing, or how it does it, I know it scales from 0 to 100, and giving preference to those with higher learning rates... it also seems to take learning rates below 100% and sets them to 100% (I'm not sure that's necessary).That's a big problem. Those are simple and obvious formulas and I didn't even expect, I'd have to write them down myself, much less explain them is such detail. :( Once again, the negative values are essential and it really is a linear scale best understood in terms of distance to 1 (or a 100). Negative values are just further away and you don't want to assign dwarves with big skill penalties to labours anyway.
What could be done, is scale anything below 0 to .01 to .1, -99 would be .01, -2.33 would be .9767. The frequency of such dwarf's is probably minimal that this wouldn't mess up your formula.Facepalm. -99 (when scaled to 1) for 0 skill means 1% learning rate (My previous code snippet had an error in the comment). -2.33 for 0 skill means 30% learning rates. Both are trivial to calculate in memory. What you're saying here is that assuming you scale to <0,100> both 1% learning rate and no skill and 30% rate and no skill are about as good as a dabbling Dwarf with 100% learning rate, which is obviously not the case.
int XP = (current_XP > 29000) ? 29000 : current_XP;
int rate = (skill_rate < 1)? 1: skill_rate; // 0 or 1 doesn't really matter.
double jobs_left = (29000.0 - XP) / rate; // Ignore division by 60.
double normalised_XP = 50.0 * (1.0 - jobs_left/290.0); // Scaled to <-4950...50>
if (normalised_XP >= 0)
normalised_XP += 50.0; // Values <50..100> reserved for those suitable for a task.
else
normalised_XP = -50.0 / (normalised_XP - 1.0); // Best I can do is a multiplicative inverse, really better suited for geometric means.
// It should be barely acceptable for learning rates no lower than 30%.
With this, 50 is no longer "halfway there", it is what you get for 100% rates and 0 skills. The closer you are to legendary +5, the closer this is to a 100, and the lower the learning rate, the closer you are to 0. Well, not the first and not the last hax in multicriterial optimisation.I'm getting pretty much to the end of my tether trying to make Dwarf TheRapist read my dwarves. I own a mac, so all of those helpful "34.11 included" versions like the splinterz branch, won't work for me. After searching a while, I found someone asking the same thing, and I've done both. Either way, DT connects to my game, but when I try to read my dwarves, it tells me that my game isn't running, or that I've unloaded the fort. I brought the fort out of my sidebar, just in case that was screwing it up, but it gives me the same message every time and it's driving me nuts. It's like DT is aware that I'm playing, but can't see the actual game. Any help?
[info]
checksum=0x8f421f9c
version_name=v0.34.11
complete=false
[addresses]
translation_vector=0x01636a88
language_vector=0x01636a70
creature_vector=0x015f56ec
dwarf_race_index=0x015dcf80
squad_vector=0x01633600
current_year=0x01fb1f21
[offsets]
word_table=0x001C
[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024
[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0158
current_job=0x0288
turn_count=0x0540
states=0x0
souls=0x05fc
labors=0x0618
happiness=0x06a8
squad_ref_id=0x070c
[soul_details]
skills=0x01D4
traits=0x01EC
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x0004
members=0x0044
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
I'm getting pretty much to the end of my tether trying to make Dwarf TheRapist read my dwarves. I own a mac, so all of those helpful "34.11 included" versions like the splinterz branch, won't work for me. After searching a while, I found someone asking the same thing, and I've done both. Either way, DT connects to my game, but when I try to read my dwarves, it tells me that my game isn't running, or that I've unloaded the fort. I brought the fort out of my sidebar, just in case that was screwing it up, but it gives me the same message every time and it's driving me nuts. It's like DT is aware that I'm playing, but can't see the actual game. Any help?
This topic is a bit too technical for easy reading so I haven't bothered to read back to the posts from June to see if the situation is any different from when I was first trying to get it to work. If it is, please dont moan.
To get Therapist to work properly with 34.11 on the mac, you will need to manually insert the required memory layout into the program's 'package contents'. To get there, right cilck on the Dwarf Therapist application, click show package contents and navigate to Contents>MacOS>etc>Memory_Layouts>osx
Within that you will see that there haven't been any added to the program since .07
Amending the download would save a lot of people a lot of hassle
I dont know where to find the .11 memory layout online but you can make it yourself by opening textedit and pasting the following into a documentCode: [Select][info]
checksum=0x8f421f9c
version_name=v0.34.11
complete=false
[addresses]
translation_vector=0x01636a88
language_vector=0x01636a70
creature_vector=0x015f56ec
dwarf_race_index=0x015dcf80
squad_vector=0x01633600
current_year=0x01fb1f21
[offsets]
word_table=0x001C
[word_offsets]
base=0x0000
noun_singular=0x0004
noun_plural=0x0008
adjective=0x000C
verb=0x0014
present_simple_verb=0x0018
past_simple_verb=0x001C
past_participle_verb=0x0020
present_participle_verb=0x0024
[dwarf_offsets]
first_name=0x0000
nick_name=0x0004
last_name=0x0008
custom_profession=0x003c
profession=0x0040
race=0x0044
flags1=0x008C
flags2=0x0090
sex=0x00A6
id=0x00A8
recheck_equipment=0x0158
current_job=0x0288
turn_count=0x0540
states=0x0
souls=0x05fc
labors=0x0618
happiness=0x06a8
squad_ref_id=0x070c
[soul_details]
skills=0x01D4
traits=0x01EC
[job_details]
id=0x0008
on_break_flag=0x0011
sub_job_id=0x0040
[squad_offsets]
id=0x0000
name=0x0004
members=0x0044
[valid_flags_1]
size=1
1\name=Not from around these parts
1\value=0x80000000
[valid_flags_2]
size=1
1\name=Dead. Deceased. An Undwarf!
1\value=0x02000000
[invalid_flags_1]
size=7
1\name=a zombie
1\value=0x00001000
2\name=a skeleton
2\value=0x00002000
3\name=a merchant or diplomat
3\value=0x00000040
4\name=outpost liason
4\value=0x00000800
5\name=an invader or hostile
5\value=0x00020000
6\name=an invader or hostile
6\value=0x00080000
7\name=an invader or hostile
7\value=0x000C0000
[invalid_flags_2]
size=2
1\name="dead, Jim."
1\value=0x00000080
2\name=from the Underworld. SPOOKY!
2\value=0x00040000
Save it as the following:
v0.34.11.ini
and then put it into the folder navigated to above.
This makes Dwarf Therapist useable, but it still has a tendency to be temperamental.
(This must have been typed out several times in this thread now)
Here's another hopefully simple suggestion (should be much easier to fix than the current optimization/sorting formulas discussion). The optimizer has an "exclude active military" option. How hard would it be to change that to (or add an additional) "exclude squad members" option to avoid having soldiers that just happen to not have active orders at the moment getting included for optimization? That wouldn't be ideal for those who tend to form civilian squads for the sake of uniforms, etc., but for those like me who tend to only use squads for military use, having to clean up a few soldiers every time you optimize takes a bit of extra time. The ability to just exclude them if they're in a squad would be nice to have.i concur whole heartedly
Here's another hopefully simple suggestion (should be much easier to fix than the current optimization/sorting formulas discussion). The optimizer has an "exclude active military" option. How hard would it be to change that to (or add an additional) "exclude squad members" option to avoid having soldiers that just happen to not have active orders at the moment getting included for optimization? That wouldn't be ideal for those who tend to form civilian squads for the sake of uniforms, etc., but for those like me who tend to only use squads for military use, having to clean up a few soldiers every time you optimize takes a bit of extra time. The ability to just exclude them if they're in a squad would be nice to have.sure, i'll just add another option so you can exclude squads, active military or both.
No problem mate. We all do this at one time or another: post in haste and repent at leisure. ;)QuoteMalak, I think you need to pull your head in a bit mate, as we say here in Australia. Coming in to a thread demanding that the volunteer developer change his code to what you want, questioning why nobody has noticed this obvious bug before (and therefore implying everyone else in the thread is an idiot), and generally using confrontational, aggressive and overbearing language is no way to win friends and influence people.I know I'm antagonising people and that this is a recurring pattern, no matter the social group. To date, I haven't found a solution to this problem. If I just wrote what I wanted to say, waited for two days, edited it and posted it then, this discussion might have looked differently, but what's done is done. There isn't even much room for "damage control".
minor annoyance to reporti'm not sure it's a good idea to cut-off the name in the grid. the thing that annoys me is when the details pane resizes to long noble lists though. this isn't related in any way to the cells resizing on large fonts.
when I sort by name (I did a startdwarf of 2000 dwarfs, similar to dfusion simple embark), it resizes the column of names by the largest name that is drawn on screen, but doesn't if that name is offscreen.
like I said a minor annoyance.
it would be nice if the name column was just drawn to a certain # regardless of longest name shown on screen (this is a remnant concern I've had with rows being resized...
the more and more i think about it. the more i dislike skill % being modified by skill rate. skill % is already modified by skill rate by attaining skill faster. to me it would b better to have a group by option for it, ot own category (such as attributes, skills, traits, preferences, skill rate), or an option to modify existing skill by skill rate (but not enabled by default)Current skill and the speed of gaining that skill are two different things. Both matter and should be separate categories.
what could be done to make it it's own category is to read all rate modifiers for castes, multiply this rate modifier by the castes frequency then do something like set the lowest value to 0, highest to 100 Something similar is being done for attributesThat could work, but this method ignores how skill rates really work. If you had two castes: one with 80% and another with 130% learning rates, the relative difference is +0.625 / -0.385. With your method one would be be set to 0 and the other to 100, which looses information about their relative importance. For a more extreme example, consider two castes having 95 and 105 learning rates in some other skill. That's not that big of a difference, but they still get set to 0% and 100%.
here's the code for attribute bins[...]I don't see why you'd need bins like this for learning rates. I don't care about probability distributions. For traits, attributes and learning rates, just knowing min and max for all castes and everyone in the fort would be enough. Yes, you can get a nicer curve with bins and set the average properly, but I don't need this kind of behaviour. Besides, it might look nice in the grid view, but for weighting attributes and traits into recommendations, just multiplying their values by weights should be better.
the traits and attributes use known knowledge to find their mean of 50. I did the research on the traits myself using 16,000 dwarf's, which provided me with about 46k data points to draw the statistics from.Ah, so you did the research. The 0.01 probabilities for being below or above the racial minimum and maximum were there, yes?
The attributes were verified once it was found dfhack was exporting names of attributes in the wrong order, I started a big fight on the wiki saying stuff was inaccurate... the attributes follow a simple 1/6 breakdown per bin category (remember what I was saying about frequency bins, at least that's what I told a frequency bin was).I remember dfhack (the command to dump Dwarves to xml), Dwarf Therapist and Runesmith not quite agreeing on what attributes of my Dwarves were in 31.25. I didn't know which was correct, but I think I assumed dfhack to be wrong.
we hope to incorporate better traits for castes by incorporating the castes min/max values that vanilla traits don't have. The formula is pretty basic, it's[...]Yeah, so long as Min and Max are correct, this will behave well. The Mean will be correct and everything above and below will scale linearly. That said, I'd be content with just:
return 100 * (Value-Min) / (Max-Min);
we hope to multiply these values by the castes frequency, so we can see where a dwarf fits within the whole fortress mode race.Yes, that's the logical thing to do once you went that far to get the average. I imagine you get your averages by taking the middles of all bins, multiplying that by their probability, then dividing that by the number of bins (or rather 6/8 the number of bins).
I finally get what your formula is doingYes, I omitted the 60 XP per job (or 120 per three mugs or whatever you get per weapon swing), but those are constants for any given skill (or reaction, in case of mugs) and therefore don't matter for comparison. All skill learning rates do is alter the number of XP gained. My formula is just an approximation, since I imagine XP is integer, while I use doubles. My formula is an answer to a question "How many jobs will it take this dwarf to max out his skill?" (except it ignores the 60 XP per job). It is also a good reason to ignore probability distribution for learning rates. You simply don't need this information to decide who is better for a job.
double jobs_left = (29000 - XP) / rate; // Ignore division by 60.
means treat each job * rate as the # of exp gained.
Interesting concept.
Here's another hopefully simple suggestion (should be much easier to fix than the current optimization/sorting formulas discussion). The optimizer has an "exclude active military" option. How hard would it be to change that to (or add an additional) "exclude squad members" option to avoid having soldiers that just happen to not have active orders at the moment getting included for optimization?When I look for dwarves to assign them civilian labours, a workaround I use is to sort by military status, but I don't use the "train all the time" schedule, so the soldiers get off-duty and get mixed up with civilians. It would be useful to have an option to treat everyone having a squad as military, regardless of schedules, or if their alert is set to active/training.
if(aspect_value < -1.0)
aspect_value = -1.0;
if(aspect_value < -1.0)
aspect_value = -2.0 - 1.0/aspect_value;
skill_rate_value = (skill_rate_value < 100) ? 100: skill_rate_value;
Wait, what? You're capping skill rate at 100%?! It should be capped at 1% and only to avoid division by 0! if(a->is_neg)
aspect_value = 1-aspect_value;
This looks suspicious, but I have no idea what it is. double eff_skill_level = dwarf.getSkill(skill_no);
if (eff_skill_level < 20.0) // Don't care anymore for Legendary +5
{ double skill_xp = dwarf.getSkillXP(skill_no); // double is important. You want floating point arithmethic for this.
double min_XP = XP_per_level[(int) eff_skill_level]; // static_cast<int>(eff_skill_level) if the compiler screams.
double max_XP = XP_per_level[1 + (int) eff_skill_level];
eff_skill_level += skill_xp / (max_XP - min_XP);
}
// Scale eff_skill_level from <0, 20> to whatever you need.
// Take it into account for recommendations, sorting or whatever.
If you want to make skill levels more apart, choose and alpha from <0.5, 1> and use this instead: eff_skill_level += alpha * skill_xp / (max_XP - min_XP);
Thistleknot, it takes most of my focus, concentration and linguistic ability for me to understand you, but I'll try to answer nonetheless.It's good that I'm not the only one.
1) "Which one of you has the highest skill now?"1) the role calcs don't use the integer level, they already use the actual current xp.
2) "Which one of you has the best attributes and traits and likes for the job?" OR "Which one of you will make the most quality items when you max out your skill?"
3) "Which one of you can get to legendary+5 with the fewest number of jobs, thus wasting the least materials?"
4) "Which one of you is the fastest?"
yes this is normal :DThistleknot, it takes most of my focus, concentration and linguistic ability for me to understand you, but I'll try to answer nonetheless.It's good that I'm not the only one.
i did some testing with the sorting on skills/labors with one of the formulas you supplied in particular: [50.0f * (1.0f - (((29000-current skill xp)/skill rate)/290.0f))]. now for me, this isn't very intuitive. i had a level 8.3 with 50% learn rate ranked below ~60 dwarves with ~0xp and 100% learn rate. personally it seems like it punishes skill rates below normal far too much. now if i compare with the current weighted method, sorry, current incredibly flawed incorrect method, the same dwarf gets ranked near the top (perhaps too near) but is still outranked by those with over 100% learn rate and a few levels less xp.Level 8.3 with 50% learn rate will max out his skill slower, but will continue to be better most of the way there. If you use your weighted arithmetic means for some weights this formula should still be OK, although a more intuitive formula for skill rates would have to sort-of simulate getting to Legendary +5 and give points for how high the skill is along the way... or maybe just pretend performing 500 jobs at (60.0 / 100.0) * skill rate and add skill levels along the way, then divide them by 500. (with some optimisations to substitute multiplication for addition where applicable). The basic formula for current skill and skill rates would therefore be:
double sr_factor = 0;
int xp = dwarf.get_xp_per_skill(skill);
for (int i=0; i<500; i++)
{ sr_factor += get_skill_level_from_XP(xp);
xp += 60 * skill_rate;
}
sr_factor /= 500.0;
You get a number in <0, 20> This is the simple and stupid version, without speed optimisations.so thinking about this more, there's still two parts to the skill rates: the column sorting method, and how to add it into the roles. for the sorting, i'm trying to get something setup so you could right click on a column header, and choose the sorting method, either for all columns of that type, or that particular column. for example:I'm guessing most people would want to apply the same method to all columns, so a radio button in the options would work better. Or maybe even your arithmetic mean with setting the weights, like it does now. I did some thinking on this and while there are other methods of aggregating goal functions, and some might be better, none is as intuitive as weighted arithmetic mean. It is for this reason that I changed my mind about it being "flawed and incorrect beyond redemption".
for roles, well that's another issue, and i'm not completely decided on what to do there. your comment about skill ratings dropping below 0, i assume is also related to your function returning negative values. this is why it was mentioned that we prefer values are all normalized to an equivalent scale of 0-1.The "simulation" method above will always return values >=0. It may even replace both a goal function for skill rates and goal function for current skill levels as a suitable alternative for both.
int XP = (current_XP > 29000) ? 29000 : current_XP;
int rate = (skill_rate < 1)? 1: skill_rate; // 0 or 1 doesn't really matter.
double jobs_left = (29000.0 - XP) / rate; // Ignore division by 60.
double normalised_XP = 0.5 * (1.0 - jobs_left/290.0); // Scaled to <-49.5, 0.5>
if (normalised_XP >= 0)
normalised_XP += 0.5; // Values <0, 0.5> reserved for those suitable for a task.
else
normalised_XP = -0.5 / (normalised_XP - 1.0);
2) as you said, the gridview can handle this somewhat.For better or worse, it also makes me prioritising attributes in my head rather than present me with an aggregating function. But I only ever care about attributes for my military and even that takes the form of "no penalties and preferably good recuperation and disease resistance".
4) getting the base speed is trivial, however the current speed is based on many factors: (environment, mood, race, caste, exhaustion, hunger, strength, agility, etc) if i add this i'll probably just show the base (race/caste) + attribute modifications and note that it's the uninfluenced speed or something.You could get some error reports about the speed being incorrect, but if you can get it or dig up the formulas, it would be useful. If possible, I'd like this to factor in the carried equipment.
I'm guessing most people would want to apply the same method to all columns, so a radio button in the options would work betteri think it may be useful to change up the sorting on the fly, without having to go into the options. this would also be easier to add additional sort values in the future, potentially without having to modify the options. i'll wait and see if anyone else weighs in.
For better or worse, it also makes me prioritising attributes in my head rather than present me with an aggregating function. But I only ever care about attributes for my military and even that takes the form of "no penalties and preferably good recuperation and disease resistance".why doesn't a custom role column work for this?
[spoiler]int XP = (current_XP > 29000) ? 29000 : current_XP;
int rate = (skill_rate < 1)? 1: skill_rate; // 0 or 1 doesn't really matter.
double jobs_left = (29000.0 - XP) / rate; // Ignore division by 60.
double normalised_XP = 0.5 * (1.0 - jobs_left/290.0); // Scaled to <-49.5, 0.5>
if (normalised_XP >= 0)
normalised_XP += 0.5; // Values <0, 0.5> reserved for those suitable for a task.
else
normalised_XP = -0.5 / (normalised_XP - 1.0);[/spoiler]
why doesn't a custom role column work for this?I've never used custom roles before. I don't even know what those are. I'm mostly fine doing this on my own anyway.
u touched on minor rate differences having large affects (i.e. 80% vs 90%). i wouldnt think this would b an issue since its merely a min/max approach (which you recommended for attributes). however. i was thinking of using a skill rate category that instead shows how many jobs is needed until legendary (similar to your original formula).If you just add skill rates on their own to a weighted arithmethic average, then yes, both methods are equivalent, but for <0, 100> you would want smaller weights. In any case I disagree with this approach. Time and time again I explained that skill learning rate only means something when you know the skill level. For a Legendary +5, skill rate 30% or 300% is irrelevant, but close to 0 XP those are very different. Therefore any method for taking skill rates into account must take skill levels into consideration as well and not just scale skill rates to some interval and add that with a weight to the goal function.
The reason I don't think a min/max approach would matter, is because the max represents the highest skill learner in the game... which uni formally applies throughout the game. A different mod, would have a different feel for this value, but it would still mean the fastest learner.Splinterz just bashed me for this with his example of a Dwarf with Level 8.3 with 50% learn rate and I must agree with him. The "simulation" method is the best I can think of, when it comes to skill level and it's learning rate. My formulas aggregated with current skill level are a distant second.
also, we used to use min/max for attributes... that was my original idea... but we changed it since the wiki had good information on bin's... and since the bins are not symmetrical, it makes more sense to use them.The way I see it, you did something stupid in a smart way. I'll try to explain the flaws of the current system from a user's standpoint.
the 0-1% and 99-100% represents dwarf's who have fallen below minimum, or gained above maximum attribute value (as defined in bin's).Except military dwarves will usually go above their maximum and there are more than 1% of them.
The wiki does state a dwarf can gain half his starting value (I believe it's half), but we just opted for this method instead, and it works.I think it says that for adventurer mode. I've never seen a military dwarf cap agility in fortress mode, but I wasn't looking very closely. I would prefer to see the whole range of attributes, but capping them at max and min for all castes works too.
as to the 16.333, I originally had it 98/6, but SOMEBODY changed it, supposedly makes for faster code.0.98/6.0 :D Compilers calculate constants and macros made of constants during compilation, so the speed is the same. Even if it wasn't, this is not a place where you need all the speed you can get, like the inside of a loop inside a loop. In most cases it is better to make code human-readable rather than micro-optimise it.
I wasn't showing you the bins for learning rate purposes... I was just showing you the research we've put into coding up each different category.Well, there is no talking you out of this now, so have fun. I just want to add a few things:
My second approach would be to find:
* Min of attribute for { all caste minimums, regardless of frequency; all current citizens }.
* Max of attribute for { all caste maximums, regardless of frequency; all current citizens }.
If Min and Max are very close, scale them further away from their mean. Say at least 300 points apart.
This would work better, except for two problems:
1) As military skills up agility, the others appear to be regressing in it.
2) 0 is not the average. This could be fixed by finding the average, like you do, and scaling everything above and below linearly. Personally I'd settle for this.
If dwarf A has a higher attribute than dwarf B, the value displayed in grid view for A should be at least as much as B, so I can see the difference at a glance. Don't just scale them inside their own castes.
Splinterz just bashed me for this with his example of a Dwarf with Level 8.3 with 50% learn rate and I must agree with him. The "simulation" method is the best I can think of, when it comes to skill level and it's learning rate. My formulas aggregated with current skill level are a distant second.Code: [Select]double sr_factor = 0;
int xp = dwarf.get_xp_per_skill(skill);
for (int i=0; i<500; i++)
{ sr_factor += get_skill_level_from_XP(xp);
xp += 60 * skill_rate;
}
sr_factor /= 500.0;
i'd really like to try implementing this, but 60xp isn't a constant rate per job. it's different depending on the skill, and even varied for any military skill experience (training vs actual combat).You're right, of course, it was too good to be true and I got too fixated on crafting. I made several beds and got 60 XP for each (so the wiki must be incorrect with 30 XP for some reason), so I guess 60 XP should be correct for most crafting skills and for things like smoothing, farming, etc, there are just different values, maybe even 10 XP per job, like the wiki says. For social skills this is probably different and military skills are notorious for erratic learning. There are different values for combat, sparring, different attacks with the same weapon, demonstration XP scales with several skills, etc.
but this still doesn't solve the issue with learning rates below 50%.It does. You just neglected to test it for skill rates such as 35% or 20%. Even for the 50% rate you chose 18000 XP, which is closer to Legendary+5 than to Dabbling, so of course the formula gave you something above 0.5.
const int max_xp = 29000;
const int xp_levels [] = {0, 500, 1100, 1800, 2600, 3500, 4500, 5600, 6800, 8100, 9500,
11000, 12600, 14300, 16100, 18000, 20000, 22100, 24300, 26600, 29000};
// xp(lvl) = 500*lvl + 100 * (lvl * (lvl -1)) / 2
// const int lev_size = sizeof(xp_levels) / sizeof(int); // 21 , unused
int get_level_from_xp(int xp) // Uses busection method. Assumes xp >= 0.
{ if (xp >= max_xp)
return 20;
int min = 0;
int max = 19;
int current = 10;
while (1)
{ if (xp < xp_levels[current])
{ max = current;
current = (min + max)/2;
} else if (xp > xp_levels[current+1])
{ min = current;
current = (min + max)/2;
} else
return current;
}
}
/* Simulation method for judging a dwarf's skill level and rate.
Inputs: dwarf's current xp and learning rate for a skill.
Output: rating based on simulating gaining experience in that skill.
*/
double simulate_skill_gain(int xp, int rate)
{ if (xp >= max_xp)
return 20;
if (rate == 0)
return get_level_from_xp(xp); // Obviously stays the same.
int sim_xp = max_xp; // 29k seems like a good value to me.
sim_xp = (sim_xp / 100.0) * rate; // This is how much XP will go towards skill learning.
int total_xp = sim_xp;
double ret = 0.0;
int curr_level = get_level_from_xp(xp);
int curr_xp = xp;
/* // Version of the while loop interpolating the level. It may be smoother.
while ((sim_xp > 0) && (curr_level < 20))
{ int xp_gap = xp_levels[curr_level+1] - curr_xp; // How much XP till mext level?
if (xp_gap > sim_xp)
xp_gap = sim_xp;
double low = (0.0 +curr_xp -xp_levels[curr_level]) / (xp_levels[curr_level+1] -xp_levels[curr_level]);
double high = (0.0 +curr_xp + xp_gap -xp_levels[curr_level]) / (xp_levels[curr_level+1] -xp_levels[curr_level]);
double avg_level = curr_level + (low + high) / 2.0; // Average scaled level for this iteration.
ret += xp_gap * avg_lvl;
curr_level++;
curr_xp = xp_levels[curr_level];
sim_xp -= xp_gap;
}
*/
// Alternate, simple version of the while loop, without the interpolation.
while ((sim_xp > 0) && (curr_level < 20))
{ int xp_gap = xp_levels[curr_level+1] - curr_xp; // How much XP till mext level?
if (xp_gap > sim_xp)
xp_gap = sim_xp;
ret += xp_gap * curr_level;
curr_level++;
curr_xp = xp_levels[curr_level];
sim_xp -= xp_gap;
}
if (sim_xp > 0)
ret += 20 * sim_xp;
ret /= total_xp;
return ret;
}
lowerValue = exp [x-1];
upperValue = exp [x]-1;
exp[ x ] is the threshold value and the lowest value for a level, not the highest value for a threshold level. Even so, I gave you a more elegant function to get_skill_level_from_XP(int xp) based on bisection. Didn't it work? we shouldn't focus on raw 60 exp points, but some sort of curve that is adjusted from 1 to 100% at a low rate (i.e. exponential), and then jumps from 100% to 500% (at a higher rate), of course this has to be considered with the amount of experience a dwarf currently has in that skill... I'm not a math major, but I know an exponential fit based on rate would be the answer.No, I don't think exponential function is the answer here.
heres an ideaDammit, I told you several times already, why this is a bad idea and you're still fixated on it. You didn't even learn that you should operate on xp left to Legendary +5 as skill rate has no influence on the xp that's already there.
rate:
0 to 100% = 0 to 50% (2:1 ratio)
100% to 500% = 50% to 100% (5:1 ratio)
exp = xp / 29000
factored = rate * exp
update:
nm... bad idea. .5 x 100% xp = 50%
maklak: no need to get testy. im just trying sh** out (u have a bad habit of commenting negative things even when i posted/realized it didnt work). i have a learning process here. i havent tried ur latest formula yet.Well, I suppose maybe I owe you an apology.
the only reason i see to use both a current xp/total xp rating and a merged xp/skill rate rating with weights applied would be to allow the user to adjust, or flat out remove the skill rate addition to the skill rating for the role. since the skill rate has a direct and significant impact on the experience gained and resulting level, i'm not sure this should even be optional.That was the idea to combat your lvl 8.1 50% rave vs lvl 0 100% rate problem. You can have skill level formula and skill level plus skill rate formula and weight them. With the simulation approach, you could just lower the number of earned XP. Values within <5000, 30000> seem sensible. For lower ones higher skills would win. For higher ones it could go both ways.
the only reason i see to use both a current xp/total xp rating and a merged xp/skill rate rating with weights applied would be to allow the user to adjust, or flat out remove the skill rate addition to the skill rating for the role. since the skill rate has a direct and significant impact on the experience gained and resulting level, i'm not sure this should even be optional.
That was the idea to combat your lvl 8.1 50% rave vs lvl 0 100% rate problem. You can have skill level formula and skill level plus skill rate formula and weight them. With the simulation approach, you could just lower the number of earned XP. Values within <5000, 30000> seem sensible. For lower ones higher skills would win. For higher ones it could go both ways.right, i see exactly what you mean after looking at a few of the outputs from the little simulator program. i also agree that sim1 is looking pretty good!
Oh and of course anything related to skill rates should only be visible / usable if any rate for any skill is not 100. That would disable it for vanilla and enable it for caste-heavy mods, which may be what you want to avoid screen clutter.this is actually already done in the last version. it does a check for any significant (>=25%) experience bonuses in the castes and if none are found (vanilla) it hides all skill rate displays and doesn't bother using them in the role calculations. i'll probably adjust that 25% figure or improve the check.
It appears that the closer one gets to higher levels, the less the rate counts. Which I guess is good. However, rate pretty much dominates lower levels...seems the whole purpose of this discussion was to have a model where learning rate was worth less the closer to the legendary +5 experience cap a dwarf is... anyway it seems to me the rest of this averaging with 'regular' (which appears to be current/total xp) is exactly what was meant with combining an experience rating with a simulated rating, so i guess this is proof of concept? again this could be expanded upon to allow a user defined weight or ratio to value the 'regular' vs simulated ratings. that might just be overkill though, i'm not sure it needs to be that flexible.
seems the whole purpose of this discussion was to have a model where learning rate was worth less the closer to the legendary +5 experience cap a dwarf is... anyway it seems to me the rest of this averaging with 'regular' (which appears to be current/total xp) is exactly what was meant with combining an experience rating with a simulated rating, so i guess this is proof of concept? again this could be expanded upon to allow a user defined weight or ratio to value the 'regular' vs simulated ratings. that might just be overkill though, i'm not sure it needs to be that flexible.
I also did something that maklak would hate. I wanted to see what would happen if I used these %'s as a basis for factoring a standard % against, respective columns are the last 3.Good, now you understand why I was so against it. I foresaw it wouldn't work.
Not really what I was expecting... Not dynamic enough (my modification). I think the formula requires more than a simple a * b to do what I was hoping for...
I'm hoping to combine it with my idea of scaling 1 to 100 from 0 to 50%, and from 100 to 500 using 50% to 100%...
we'll see if I can get it done before maklak can comment on it.
New user trying to figure out a basic feature: How do I see attributes (not traits) in DT? I have DT 0.6.12 installed on a Mac using Dwarf Builder.
I've seen screenshots of them displayed in the grid for example. I did a search but it seemed to mostly turn up discussion about user-modified versions or advanced questions. I tried filtering based on attributes but it always results in 0 dwarves in the list.
for 10000 50Working as intended and there is nothing to fix. 10.3333 is the current interpolated level for 10000 XP, so low is equal to 0.3333. High is equal to 1, since we have enough sim_xp left to gain next level. I could just add 1 XP each time, then add the interpolated level for that, but I do the smart thing instead. Low, high and xp_gap form a trapezoid with two right angles and I calculate it's surface area. The "slope" of interpolated level stays the same until a level up. Just think of it as changing lots of additions into a multiplication by "average level" from 10000 to 11000 XP, which is 10.66666 for 10500 XP.
your avg_level is 10.666 when it should be 10.333
LevelFromXP = (double(xp) /(225.0f + 5.0f*sqrt(2025.0f + (2.0f*double(xp)))));I haven't figured out where it came from, but it looks very good on a graph. It gives the right numbers for all levels and there are only minor differences between this and my "linear between levels" approach. Plugging this directly into sim2 will introduce up to 2% additional error, which is OK. Good job on this one, Splinterz.
wow, I love this part of the codeWell, I think sim1 is better overall, but for this formula I had a piece of code that said how much effort it will take to get to Legendary+5 with current xp and skill rate. The problem was that for very poor rates it returned too negative values. One solution was to cap it at say 50% skill rate and call it a day, as you proposed, but I wanted something more elegant, so instead I used http://en.wikipedia.org/wiki/1/x When used properly, it can map a finite interval into an infinite one, or vice-versa and near the "fat part" it looks pretty nice. So I made a continuous function by glueing it with linear function for really good rates. That way I still have some kind of comparison going on for very low skill rates and nice linear properties if Legendary+5 is closer than 29000 xp after factoring in the skill rate. It could be further tweaked to make the linear part longer, but I'm unsure what would be better.
btw, your code (untouched) won't run 27000 or 28000 exp at 100% rate...Come again?
.25 skill .75 rateThis one looks the best to me, except 1% rate sucks no matter what, but then you normally don't get that low in mods. These graphs are why the pseudo-simulation approach is better. No matter how you tweak the weights for skill and skill_rate_eval, it still won't give you exactly what you want for all xp and skill rate values.
I'm still a bit confused then as to how your formula does that advanced math stuff on triangles and mine and splinterz come out the same...Hey, last time you said, they weren't exactly the same. Anyway, my sim1 and sim2 formulas pretend they perform numerical integration (http://en.wikipedia.org/wiki/Numerical_integration), sim1 uses something similar to the rectangle method (http://en.wikipedia.org/wiki/Rectangle_method), while sim2 uses trapezoid rule (http://en.wikipedia.org/wiki/Trapezoidal_rule), but in this particular case sim1 is better, I think. sim1 only cares about current level rounded down. Wikipedia has some nice pictures on numerical integration.
double getLevelFromXP (int xp)
{ return (double(xp) /(225.0f + 5.0f*sqrt(2025.0f + (2.0f*double(xp)))));
}
double simulate_skill_gain_slopes_2(int xp, int rate)
{ if (xp >= max_xp)
return 20.0 / 20.0;
if (rate == 0)
return getLevelFromXP(xp) / 20.0; // Obviously stays the same.
int sim_xp = max_xp; // 29k seems like a good value to me.
sim_xp = (sim_xp * rate) / 100; // This is how much XP will go towards skill learning.
int total_xp = sim_xp;
double ret = 0.0;
int curr_level = getLevelFromXP(xp); // Convert to int
int curr_xp = xp;
while ((sim_xp > 0) && (curr_level < 20))
{ int xp_gap = xp_levels[curr_level+1] - curr_xp; // How much XP till mext level?
if (xp_gap > sim_xp)
xp_gap = sim_xp;
double low = getLevelFromXP(curr_xp);
double high = getLevelFromXP(curr_xp + gap_xp);
double avg_level = (low + high) / 2.0; // Average scaled level for this iteration.
ret += xp_gap * avg_level;
curr_level++;
curr_xp = xp_levels[curr_level];
sim_xp -= xp_gap;
}
if (sim_xp > 0)
ret += 20 * sim_xp;
ret /= total_xp;
ret /= 20.0;
return ret;
}
It uses the exact same method as sim2, but the output will be slightly different. min_xp_for_this_lvl = 500 * lvl + 100 * (lvl * (lvl -1))/2
interpolated_level(xp) = (-9.0 + sqrt(81.0 + (2.0*xp)/25.0)) /2
It gives exactly the same results as Splinterzes formula, but I don't know why the two are equivalent. double low = getLevelFromXP(curr_xp);
double high = getLevelFromXP(curr_xp + gap_xp);
double avg_level = (low + high) / 2.0;
There is no reason to make sim1 work like sim2 when you already have sim2 and the above replacement for it's interpolation. i see now that ur code isnt adding xps.... i think u mentioned that.Adding them to what? The "beautiful" formula actually subtracts current xp, while sim1 and sim2 add xp just fine.
your very original formula did a 500 run loop of adding factored xps (60 * rate). Thats what i was referring to when i said sim1 and sim2 don't seem to be adding xps (everytime a new xp is calculated (at least for sim1), it's only the rounded down version of the next level (i.e. based on the array). I was trying to figure out where I could include an option to add accrued xp (you mentioned that my modded sim1 formula starts with an interpolated level, but afterwards, all the levels are rounded down (xp wise)), I was trying to remedy that, but your sim formulas r doing geometric "shortcuts"Ah yes, my original formula was quick and dirty and I mentioned, it had obvious optimisations by substituting division with addition. For example when you have 10000 xp, at 60 xp per job and 130% rate, you get (11000 - 10000) / ((60 * 130)/100) = 12, but since (((11000 - 10000) % ((60 * 130)/100)) != 0) you need more than 12 jobs to get to next level, so it it actually 13 jobs at level 10 to get to level 11.
Here's my exported labor planYou haven't written what those numbers are.
double simulate_skill_gain(int xp, int rate)
{ if (xp >= max_xp)
return 20.0 / 20.0; // Already at max level. Getting more XP won't change the skill level.
if (rate == 0)
return get_level_from_xp(xp) / 20.0; // Obviously stays the same.
int sim_xp = max_xp; // This is how much xp will be simulated. 29k seems like a good value to me. 10000 or 20000 might also work.
sim_xp = (sim_xp / 100.0) * rate; // This is how much XP will go towards skill learning after factoring in the rate.
int total_xp = sim_xp; // This is just used for division at the end.
double ret = 0.0; // return value, based on the average level for this simulation.
int curr_level = get_level_from_xp(xp); // current (non-interpolated) level for our xp.
int curr_xp = xp; // current xp in that skill.
while ((sim_xp > 0) && (curr_level < 20)) // while there is xp to simulate gaining skill and not yet legendary +5
{ int xp_gap = xp_levels[curr_level+1] - curr_xp; // How much XP till next level?
if (xp_gap > sim_xp) // If we run out of sim_xp before reaching the next level, we just use it all up and not get to next level.
xp_gap = sim_xp;
ret += xp_gap * curr_level; // We stay on this level until enough xp is accumulated, so we use that xp as the weight for current level.
curr_level++; // This is only correct if we make it to the next level, but if we don't the loop ends here anyway.
curr_xp = xp_levels[curr_level]; // This is the lowest amount of xp on next level, but really curr_xp += xp_gap;
sim_xp -= xp_gap; // We subtract the amount of xp spent on this level from the total number of xp to simulate.
/* More correct formulas here, but since the loop ends when sim_xp runs out, what I have here now works just fine:
ret += xp_gap * curr_level;
curr_xp += xp_gap;
curr_level = get_level_from_xp(curr_xp); // Function call here, so you might preffer the ++.
sim_xp -= xp_gap;
*/
}
if (sim_xp > 0)
ret += 20 * sim_xp; // Any leftover sim_xp means Legendary +5, so we take that into account.
ret /= total_xp; // Divide by total xp to get the average level for this simulation.
ret /= 20.0; // Normalise to <0, 1>
return ret;
}
ah, nm. I have no idea what to mess with to try to get sim1 to be more like sim2, but using actual increases in xp vs the geometric methods... I'm not really sure what some of these different xp values are supposed to represent.I have no idea why to mess with sim1 to be more like sim2 when you already have sim2 and I've even given you a sim3, which is sim2 using the sqrt formula for level from xp.
if traits modify eligibility for skills. maybe they should affect the rate of learning?
I had some ideas, the first one I think is a non starter, but what about a sim3 that measured average level each iteration from current to level 20 (i.e. distance from max skill)
secondly, I don't know if this formula would help in optimizing your formula's.// xp(lvl) = 500*lvl + 100 * (lvl * (lvl -1)) / 2;
so i was proposing modifying the rate (ie learning rate) of those skills to 0 if those skills couldnt be learned...
1. Is skill rust displayed by default? I have dwarves that are rusty in various minor skills and one who's definitely lost a level to rust, but I don't see any orange highlights anywhere.
2. Where's the manual? I've forgotten how to do some things.
1. Is skill rust displayed by default? I have dwarves that are rusty in various minor skills and one who's definitely lost a level to rust, but I don't see any orange highlights anywhere.
2. Where's the manual? I've forgotten how to do some things.
1. unfortunately i've found no reliable way of determining rust vs very rust and as far as i can tell there are bugs with rusting skills that make this even more difficult. the only thing i'm able to detect is if a skill has already begun losing xp. those skills will be orange in the tooltip and in the dwarf detail pane.
1. Is skill rust displayed by default? I have dwarves that are rusty in various minor skills and one who's definitely lost a level to rust, but I don't see any orange highlights anywhere.
2. Where's the manual? I've forgotten how to do some things.
1. unfortunately i've found no reliable way of determining rust vs very rust and as far as i can tell there are bugs with rusting skills that make this even more difficult. the only thing i'm able to detect is if a skill has already begun losing xp. those skills will be orange in the tooltip and in the dwarf detail pane.
Actually, Quietust just figured it out:
rusty = skill.rating > 0 and skill.rating * 0.5 <= skill.rusty
very_rusty = skill.rating >= 4 and skill.rating * 0.75 <= skill.rusty
1. unfortunately i've found no reliable way of determining rust vs very rust and as far as i can tell there are bugs with rusting skills that make this even more difficult. the only thing i'm able to detect is if a skill has already begun losing xp. those skills will be orange in the tooltip and in the dwarf detail pane.I still can't see it anywhere... I don't know if I'm missing something obvious.
Just a small question:
Has anyone made a pre-set list of filter scripts, roles, and optimizers (like a packaged file of them, or a sort of plugin pack)?
I already crafted a few of my own, like filters to find out dwarves that are more/less than 50 happiness, Dwarves with no employment whatsoever (or cleared, and forgot to assign), and a few others. However, with the optimizer and roles, I don't have all that much pre-set; or at least, I'm not clear on how the optimizer optimizes (and how it ties in with the roles and whatnot). I test-optimized, and it pretty much auto-assigned my entire fort into hauling duties.
I wasn't sure if the optimizer auto-assigned dwarves to what they're best suited for or not, or what kind of parameters I needed to set to make it work properly, though the profiles of the dwarves stated such.
input: int att, int att_cap; // Current attribute value and cap.
int att_sim = 2000; // Or whatever you think is prudent.
int max_delta = (att_cap -att) > att_sim? att_sim : (att_cap -att); // min {att_sim, att_cap -att}
double ret = ((att + att + max_delta) * max_delta) / 2.0; // Or att * max_delta + (max_delta * max_delta) / 2.0
// if (max_delta != att_sim)
ret += (att_sim - max_delta) * att_cap;
ret /= att_sim; // Ret is now the average value for this attribute when you gain 2000 times in it and cap at some point.
return ret;
Tthistleknot, is there a way for you to get the starting attribute for current dwarf?yes. splinterz has it in his latest beta.
int sim3 (int att, int initial)
{ int att_cap = initial * 2; // Actually: int att_cap = initial + ((initial > median) ? initial : median);
att_cap = (att_cap > 5000) ? (5000) : (att_cap); //caps at 5000
// If att > att_cap, there can be no gain, except by interactions.
if (att > att_cap)
return att;
int att_sim = 2000; // Or whatever you think is prudent. This is where you can factor in attribute rates.
int max_delta = (att_cap -att) > att_sim? att_sim : (att_cap -att); // min {att_sim, att_cap -att}
long long ret = ((att + att + max_delta) * max_delta) / 2; // Or att * max_delta + (max_delta * max_delta) / 2
ret += (att_sim - max_delta) * att_cap;
ret /= att_sim; // Ret is now the average value for this attribute when you gain 2000 times in it and cap at some point.
return (int)ret;
}
> You said something about assigning the undesirable effect of militia dwarf's being assigned to labors?You can sort by squad and you will get a list of every dwarf not in the military first followed by the rest grouped into their squads active or not.
If I have a DT option to filter out military (all of them, not just the ones currently on duty), then I can manage. Nobles are less important, because I only have a few of them, overlap their responsibilities (manager + record keeper) and can remember or rename them.
I don't mind the military as haulers, butchers and so on, but I don't want them to do any of the important jobs, unless they mood out.
squad _id()>0 is militaryunfortunately, these are all incorrect. check my post above for the proper syntax.
the opposite r civvies
theres also a noble_id()
> what about modifying the above formula for attribute rate gain?
Simple, if you know how those work. "int att_sim = 2000;" Modify 2000 by the gain rate, similar to sim1 for skills. You want to use the first number, the "cost to improve". I think it should be "att_sim = att_sim * 500.0 / CTI;" assuming the lower cost the better.
att_sim = (att_sim / 100.0) * CTI;
//att_sim = att_sim / (CTI/100);
//att_sim = att_sim * 500.0 / CTI;
the uncommented one went higher with higher skill rates, which is exactly what you had typed.// Actually: int att_cap = initial /+ ((initial > median) ? initial : median);Splinterz was saying something about something that looked similar.
I think when you say "lower cost the better" you mean cost to improve attributes, such as 1:1 vs 5:1, which confuses me why we're dividing by 100 then multiplying. Say my rate is 500%, so if the att_sim is 5000, shouldn't it be 5000/5 (i.e. 500%) but we're doing 5000 / 100 (to normalize 100% to 1) then MULTIPLYING by rate... therefore increasing sim.I did no such thing. You're commenting about your own formula here.
regarding ATT_RATES: the first value (cost to improve) is indeed better the lower the value is. what happens in the background is that a counter is incremented up to the CTI and then the attribute is increased. i haven't tested it, but assuming it works like rust, the increase is only by 1 point each time the CTI maximum is reached. this is definitely different from skills, as the skill rate is modifying the amount of xp gained, while the CTI is basically just modifying a counter's limit.This is what I thought, based on the name "cost to improve".
i did a quick bit of testing on the attribute rate gains with a woodcutter at 500 and 100 rates. the improvement counter gain was the same: +1 per 10 game steps while cutting trees. this resulted in a gain of 37 to the counter per tree the dwarf cut down. so at 500 it required 13.51 trees to increase strength by 1, while at 100 it only required 2.702 (or the expected 1/5 of 13.51).This means I was right and (if you can get CTI for an attribute):
Ugh, remind me, what do you need to do with the attributes again and why? I think displaying them is already handled, so now you want something to decide which dwarf has better attributes for a job and to do that you want to factor in potential attribute gain over time, yes?
i wanted to feed the value back into the frequency bin.I meant take your sim3 approach, and put the # back into the formula as described below.
I still think that taking an old fort and looking at attribute gains there (att -initial) would be a good way to make an informed guess on good att_sim values. They would be good for agility, strength, endurance and so on, OK for things like memory and creativity and negative for musicality.
Originally DT used to use statistics and the current population to derive %s from. However, since we've deviated from that and tried to hard code everything (see above frequency bin as reference), we were hoping to derive an att_sim based on the raws of an attribute.Can we have an option to sort dwarves by age? It's kind of a niche use, but if you're trying to get dwarves to socialise and marry they have to be fairly close in age (and also not be siblings or parents. Cousins and aunts/uncles may be fine though).
input: att, initial, att_sim, CTI, median
// CTI, att_sim, yada yada.
att_cap = initial + max {initial, median}
int sum = 0;
for (int i=0; i<att_sim; i++)
{ sum += att;
att++;
att = min {att, att_cap}
}
sum /= att_sim;
return sum;
now, why do you need the bins for attributes anyway? For ranking them for the labour optimizer? You said you wanted weighted averages for attributes, but why do you need them in the first place? Unless I understand your motivation and the reasoning behind it, I'm stumbling in the dark here.
The one problem I see with that is that agility and strength are the most important attributes anyway because they influence speed and faster dwarves are better at everything (walk faster, finish working at workshops faster, better military, everything). Still, DT with high weight for attributes likes to pick my military for all sorts of labours, so it kinda works now.
This is a custom role issue, you can weight strength/agility higher for the roles that you feel it's important for INSIDE the role editor.(att - min) / (max - min), so for Strength (att -450) / (2250 -450). You would have to check for some edge cases (max == min), or the result of this formula exceeding <-100, 200>, but other than that it should work for all attribute values. Use min and max average for all castes and based on their frequency.
sim3 can't help much here, I'm afraid. It kinda factors in the cap for an attribute, but sim1 for skill gains and rates was much more useful.
This is why I wanted to feed the return value (wether it's sim1 or sim3) back into the frequency bin's to get a # that is scaled back to our distribution.double normalised_XP = 0.5 * (1.0 - jobs_left/290.0); // Scaled to <-49.5, 0.5>where whatever value you get, you factor it down to <.5
float mod_att_value(int CTI, int max, int current)
{
const int defaultCTI = 500; //set as default... values above/below will adjust accordingly.
//int CTI; //Cost to improve as described via tokens.
//int max; //dwarf's max attribute
//int current; //dwarf's current attribute
float mod_Att_Value;
float add_value;
float gap = (float(max) - float(current)) * defaultCTI / CTI;
float normalized_gap = 0.5 * (1 - gap / (float(max) - float(current)));
if (normalized_gap >= 0)
normalized_gap += 0.5; // Values <0, 0.5> reserved for those suitable for a task.
else
normalized_gap = -0.5 / (normalised_gap - 1.0);
add_value = normalized_gap * gap;
mod_Att_Value = current + add_value; //can weight mod_Att_Value against current value for weighted average
return mod_Att_Value;
}
I know I feel slightly stupid right now, for asking this, but may I ask if there are any recomendations on how to set up the optimizer for your forts? I was trying to figure it otu a bit ago, and...I saw some strange selections by it, so I feel I was being absolutely -stupid- with what I was telling it to keep an eye open for >.< then again I was playing Kobold camp with Masterwork at the time so that might be one reason I felt like I did so stupidly with the setup @_@the optimizer sets up pairings between labors and either their related skill, or a chosen role. the skill or role chosen determines 'how to score' each dwarf for the labor or job that needs to be done. the priority column can kind of be thought of as a ranking of importance for the jobs/labors in the optimization plan. a higher priority means there's a better chance of assigning a highly rated worker to the job. the ratio is a way to setup approximately how many workers will actually be assigned to the job or labor.
for memory locations you can't just save the address of an attribute, as when you start a program it will load into memory in (potentially) a different base address each time. you'll need to use the right click in dt and look at the memory dump, plug in the base address for the dwarf, and then the offsets to get to the attributes, each time you want to mess around with cheat engine.
Yeah, I think DT should just be for observation and for doing stuff that you can do in-game. At the moment the only DT options that DF doesn't have are 'highlight cursed dwarves' and 'allow child labour', and that's okay.yes i agree. it's never been intended to turn it into something like runesmith. i also believe there are a quite a few dfhack scripts and plugins for tweaking values already.
Could someone point me to the memory adresses to use with Cheat Engine?. :'(here you go: https://github.com/angavrilov/df-structures
I sometimes get posts by people saying that they can see my custom written "cursed dwarves" with dfhack. Which is not true. My disease carriyng migrants, cults, possessed dwarves, and so forth ARE invisible. They use a caste system, but the caste name is identical to the normal dwarves, so the Therapist sorts them to the normal castes.
We did talk about this a long time ago, and I think it is just perfect as it is. ;) But for testing, bugfixing and people that like to use this "highlight cursed dwarves" it would be nice to have the option to see them. I dont know of any other mod using this system (I think LFR is planning on an addition though) so I dont know if you want to add it as a feature.
If yes, all you would have to do is add an option to sort dwarves by caste-id. I think some people that play my mod, including me, would be greatful for the option. :)
New Feature request... not sure if anyone wants it. (and I'd hate to hold up a new release). a status icon column. I'm wondering how many of my dwarf's are thirsty (http://dwarffortresswiki.org/index.php/DF2012:Status_icon) i don't see any thirsty icons, but I'm wondering if anyone is still thirsty after my supposed wells are in place).
Ah, you did just that with your code. Well, I haven't made a graph of it. By the looks of it, for the same CTI the order will be correct, but it will have some irregularities and will definitely not be linear.
I still say it would be a better idea to just use sim3 for attributes, taking the att_sim values as either maximums or minimums from an old fort and call it a day.
It factors in the CTI and returns higher values for lower CTI.
#include <iostream>
#include<stdio.h>
#include <math.h>
using namespace std;
const int default_cti = 500; //set as default... values above/below will adjust accordingly.
int sim3 (int att, int cap, int CTI)
{
if (att > cap)
return att;
int sim_value = 2000;
int att_sim = sim_value * default_cti / CTI; //default_cti could be a weighted average of all cti's.
int max_delta = (cap - att) > att_sim? att_sim : (cap - att);
long ret = ((att + att + max_delta) * max_delta) /2 ;
ret += (att_sim - max_delta) * cap;
ret /= att_sim;
return (int)ret;
}
int mySim (int att, int cap, int CTI)
{
//int CTI; //Cost to improve as described via tokens.
//int max; //dwarf's max attribute
//int current; //dwarf's current attribute
float mod_Att_Value;
float add_value;
if(att>=5000)
{
return 5000;
}
float gap = (float(cap) - float(att)) * default_cti / CTI;
float normalized_gap = 0.5 * (1 - gap / (float(cap) - float(att)));
if (normalized_gap >= 0)
normalized_gap += 0.5; // Values <0, 0.5> reserved for those suitable for a task.
else
normalized_gap = -0.5 / (normalized_gap - 1.0);
add_value = normalized_gap * gap;
mod_Att_Value = att + add_value; //can weight mod_Att_Value against current value for weighted average
return int(mod_Att_Value);
}
int main()
{
int ret = 3;
int att;
int cap;
int CTI;
//att_sim is based on median possible gain, not sure if it should be based on average possible gain, or median possible gain, or max possible gain
//formula is ((median*.5) + (((5th bin + 6th bin)/2) *.5)
/*
450:950:1150:1250:1350:1550:2250
(1250*.5)+((1350+1550)/2)*.5
=1350
*/
printf("input:\n current, cap, CTI\n\n");
printf("output:\n current, cap, CTI, sim3, mine\n\n");
while (ret = scanf("%d %d %d", &att, &cap, &CTI) == 3)
{
printf("%d, %d, %d, %d, %d\n", att, cap, CTI, sim3(att, cap, CTI), mySim(att, cap, CTI));
}
return 0;
}
BTW, in case you didn't notice this yourself, your graphs for sim3 had 2 intervals where they were linear: before the cap and after the cap.??? link please?
sim3 gives you the predicted average attribute value during some some hypothethical gain. If you don't hit a cap, it returns "att + att_sim/2" (the formulas it uses do exactly this, except are more complex to handle the second part. After you hit the cap, value returned by sim3 is between "(att_cap+att)/2" and "att_cap". It increases with att_sim at the speed of "x/(1+x)" (If you really want me to, I can derive the formula for this).
by sort, do you mean group by? so these special caste dwarves don't actually have a curse, they're just a special caste?
for this bug, you're just clicking an individual cell to turn on the labor, but you can't click it again to turn it off? does it flicker off and then back on? if you wait a second before clicking to turn it off does it work?Quoteby sort, do you mean group by? so these special caste dwarves don't actually have a curse, they're just a special caste?
Yes, exactly. They have not been cursed, but instead are a caste with an interaction. This way I can affect the chance of them arriving (with population ratio). If I would use curses it would be completely random.
Oh, I also have another report: When I leftclick on the grid, for example for "toggle farming" then it only turns all farming on for all dwarves. But it cant turn it off.
Hi all, one of my friends is having a strange problem with the version 0.6.12, it seems that is lists even dead dwarves in the dwarf tabelunfortunately DwarfEngineer hasn't been around for quite some time. i've branched the 'official' version and you can check it out in my signature. if you want to keep the old version, but fix the problem with the dead dwarves showing up, you'll need to copy the flags sections at the bottom of the ini files from my branch (http://code.google.com/r/splintermind-attributes/source/browse/#hg%2Fetc%2Fmemory_layouts%2Fwindows%253Fstate%253Dclosed) to your current version.
what is the lates version? is it possible to update the opening post with the lates news?
Edit: oh, and once I am here already: Is there a hotkey (or option) to toggle ALL labors, for all dwarves?
for this bug, you're just clicking an individual cell to turn on the labor, but you can't click it again to turn it off? does it flicker off and then back on? if you wait a second before clicking to turn it off does it work?Quoteby sort, do you mean group by? so these special caste dwarves don't actually have a curse, they're just a special caste?
Yes, exactly. They have not been cursed, but instead are a caste with an interaction. This way I can affect the chance of them arriving (with population ratio). If I would use curses it would be completely random.
Oh, I also have another report: When I leftclick on the grid, for example for "toggle farming" then it only turns all farming on for all dwarves. But it cant turn it off.Hi all, one of my friends is having a strange problem with the version 0.6.12, it seems that is lists even dead dwarves in the dwarf tabelunfortunately DwarfEngineer hasn't been around for quite some time. i've branched the 'official' version and you can check it out in my signature. if you want to keep the old version, but fix the problem with the dead dwarves showing up, you'll need to copy the flags sections at the bottom of the ini files from my branch (http://code.google.com/r/splintermind-attributes/source/browse/#hg%2Fetc%2Fmemory_layouts%2Fwindows%253Fstate%253Dclosed) to your current version.
what is the lates version? is it possible to update the opening post with the lates news?
Its not delayed, it simply does not happen. I tried several groups, castes... but anyway, if you cant reproduce it, it is my system or mod. Either way not a big issue. I wouldnt think about. I will see if it works with a different save, once I play a bit more.QuoteEdit: oh, and once I am here already: Is there a hotkey (or option) to toggle ALL labors, for all dwarves?
Just a minor bug report: When you go to "Set Nickname..." in DT through right-clicking on a Dwarf's name, you aren't allowed to enter nicknames longer than 16 characters, getting the message "Nickname must be under 16 characters long". But in DF itself, you can set nicknames up to 39 characters long.this is a technical barrier, not a bug. since dwarf therapist doesn't run within the address space of dwarf fortress, it's unable to allocate any new memory, which is necessary for strings longer than the normal buffer size.
2013-Feb-10 18:06:12.327 INFO core Dwarf Therapist "0.6.12" starting normally. [src\dwarftherapist.cpp:123] (setup_logging)
2013-Feb-10 18:06:12.463 INFO core Loaded 8 views from disk [src\viewmanager.cpp:139] (reload_views)
2013-Feb-10 18:06:12.464 DEBUG core group_by now set to 0 [src\models\dwarfmodel.cpp:766] (set_group_by)
2013-Feb-10 18:06:12.468 DEBUG core group_by now set to 0 [src\models\dwarfmodel.cpp:766] (set_group_by)
2013-Feb-10 18:06:12.468 DEBUG core "redrew views in 5ms" [src\viewmanager.cpp:259] (draw_views)
2013-Feb-10 18:06:12.477 DEBUG core setting up connections for MainWindow [src\mainwindow.cpp:141] (MainWindow)
2013-Feb-10 18:06:12.480 DEBUG core group_by now set to 1 [src\models\dwarfmodel.cpp:766] (set_group_by)
2013-Feb-10 18:06:12.480 DEBUG core group_by now set to 1 [src\models\dwarfmodel.cpp:766] (set_group_by)
2013-Feb-10 18:06:12.481 DEBUG core beginning to read settings [src\dwarftherapist.cpp:145] (read_settings)
2013-Feb-10 18:06:12.515 DEBUG core finished reading settings [src\dwarftherapist.cpp:201] (read_settings)
2013-Feb-10 18:06:12.559 DEBUG core attempting connection to running DF game [src\mainwindow.cpp:263] (connect_to_df)
2013-Feb-10 18:06:12.563 DEBUG core adding valid layout "v0.34.11 (graphics)" "0x4fcc9488" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.564 DEBUG core adding valid layout "v0.34.10 (graphics)" "0x4fba073a" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.565 DEBUG core adding valid layout "v0.34.09 (graphics)" "0x4fb4c506" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.566 DEBUG core adding valid layout "v0.34.08 (graphics)" "0x4fb0ccba" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.566 DEBUG core adding valid layout "v0.34.07 (legacy)" "0x4f7592fe" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.567 DEBUG core adding valid layout "v0.34.07 (graphics)" "0x4f7592fe" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.567 DEBUG core adding valid layout "v0.34.06 (legacy)" "0x4f6c279c" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.568 DEBUG core adding valid layout "v0.34.06 (graphics)" "0x4f6c34ca" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.569 DEBUG core adding valid layout "v0.34.05 (legacy)" "0x4f55e19c" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.569 DEBUG core adding valid layout "v0.34.05 (graphics)" "0x4f55f23e" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.570 DEBUG core adding valid layout "v0.34.04 (legacy)" "0x4f4d8635" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.570 DEBUG core adding valid layout "v0.34.04 (graphics)" "0x4f4d9726" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.571 DEBUG core adding valid layout "v0.34.03 (legacy)" "0x4f4cd85b" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.571 DEBUG core adding valid layout "v0.34.03 (legacy)" "0x4f4cd85b" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.572 DEBUG core adding valid layout "v0.34.02 (legacy)" "0x4f3f76bf" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.572 DEBUG core adding valid layout "v0.34.02 (graphics)" "0x4f3f88bc" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.573 DEBUG core adding valid layout "v0.34.01 (legacy)" "0x4f390718" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.573 DEBUG core adding valid layout "v0.34.01 (graphics)" "0x4f391a33" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.574 DEBUG core adding valid layout "v0.31.25 (legacy)" "0x4d9068da" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.574 DEBUG core adding valid layout "v0.31.25 (graphics)" "0x4d90764f" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.575 DEBUG core adding valid layout "v0.31.24 (legacy)" "0x4d8f2994" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.575 DEBUG core adding valid layout "v0.31.24 (graphics)" "0x4d8f39f9" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.575 DEBUG core adding valid layout "v0.31.23 (legacy)" "0x4d8dd5a2" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.576 DEBUG core adding valid layout "v0.31.23 (graphics)" "0x4d8de854" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.576 DEBUG core adding valid layout "v0.31.22 (legacy)" "0x4d8b1dce" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.577 DEBUG core adding valid layout "v0.31.22 (graphics)" "0x4d8b30fc" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.577 DEBUG core adding valid layout "v0.31.21 (legacy)" "0x4d743206" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.578 DEBUG core adding valid layout "v0.31.21 (graphics)" "0x4d743da7" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.578 DEBUG core adding valid layout "v0.31.20 (legacy)" "0x4d72f10d" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.579 DEBUG core adding valid layout "v0.31.20 (graphics)" "0x4d734fb5" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.579 DEBUG core adding valid layout "v0.31.19 (legacy)" "0x4d5b9f3c" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.580 DEBUG core adding valid layout "v0.31.19 (graphics)" "0x4d5bc345" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.580 DEBUG core adding valid layout "v0.31.18 (legacy)" "0x4ce278c2" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.580 DEBUG core adding valid layout "v0.31.18 (graphics)" "0x4ce2841d" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.581 DEBUG core adding valid layout "v0.31.17 (legacy)" "0x4cdc0c76" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.581 DEBUG core adding valid layout "v0.31.17 (graphics)" "0x4cdc27a0" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.582 DEBUG core adding valid layout "v0.31.16 (legacy)" "0x4ca9c859" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.582 DEBUG core adding valid layout "v0.31.16 (graphics)" "0x4ca9d544" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.583 DEBUG core adding valid layout "v0.31.15 (legacy)" "0x4ca859cd" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.583 DEBUG core adding valid layout "v0.31.15 (graphics)" "0x4ca869ea" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.583 DEBUG core adding valid layout "v0.31.14 (legacy)" "0x4c9b4c27" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.584 DEBUG core adding valid layout "v0.31.14 (graphics)" "0x4c9b6efb" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.584 DEBUG core adding valid layout "v0.31.13 (legacy)" "0x4c908b66" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.584 DEBUG core adding valid layout "v0.31.13 (graphics)" "0x4c90ada8" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.585 DEBUG core adding valid layout "v0.31.12 (legacy)" "0x4c4c1527" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.585 DEBUG core adding valid layout "v0.31.12 (graphics)" "0x4c4c32e7" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.586 DEBUG core adding valid layout "v0.31.11 (legacy)" "0x4c495d9f" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.586 DEBUG core adding valid layout "v0.31.11 (graphics)" "0x4c496d93" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.586 DEBUG core adding valid layout "v0.31.10 (legacy)" "0x4c397516" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.587 DEBUG core adding valid layout "v0.31.10 (graphics)" "0x4c398089" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.587 DEBUG core adding valid layout "v0.31.08 (legacy)" "0x4c1d60a0" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.588 DEBUG core adding valid layout "v0.31.08 (graphics)" "0x4c1d69fe" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.588 DEBUG core adding valid layout "v0.31.06 (legacy)" "0x4c0f6a01" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.589 DEBUG core adding valid layout "v0.31.06 (graphics)" "0x4c0f83d5" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.589 DEBUG core adding valid layout "v0.31.05 (legacy)" "0x4c090730" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.589 DEBUG core adding valid layout "v0.31.05 (graphics)" "0x4c091569" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.590 DEBUG core adding valid layout "v0.31.04 (legacy)" "0x4befdde5" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.590 DEBUG core adding valid layout "v0.31.04 (graphics)" "0x4bf014fa" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.590 DEBUG core adding valid layout "v0.31.03" "0x4bc3c470" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.591 DEBUG core adding valid layout "v0.31.02" "0x4bbdf378" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.591 DEBUG core adding valid layout "v0.31.01" "0x4bb45f99" [src\dfinstance.cpp:111] (DFInstance)
2013-Feb-10 18:06:12.591 DEBUG core attempting to find running copy of DF by window handle [src\dfinstancewindows.cpp:191] (find_running_copy)
2013-Feb-10 18:06:12.591 DEBUG core found copy with HWND: 0x3033a [src\dfinstancewindows.cpp:207] (find_running_copy)
2013-Feb-10 18:06:12.591 DEBUG core PID of process is: 2052 [src\dfinstancewindows.cpp:214] (find_running_copy)
2013-Feb-10 18:06:12.591 DEBUG core PROC HANDLE: 0x560 [src\dfinstancewindows.cpp:222] (find_running_copy)
2013-Feb-10 18:06:12.591 DEBUG core PEB is at: 0xfffde000 [src\dfinstancewindows.cpp:228] (find_running_copy)
2013-Feb-10 18:06:12.591 DEBUG core read 12 bytes BASE ADDR is at: 0xdc0000 [src\dfinstancewindows.cpp:241] (find_running_copy)
2013-Feb-10 18:06:12.592 DEBUG core Target EXE was compiled at "2012-06-04T05:57:12" [src\dfinstancewindows.cpp:70] (calculate_checksum)
2013-Feb-10 18:06:12.592 DEBUG core DF's checksum is: "0x4fcc9488" [src\dfinstance.cpp:1254] (get_memory_layout)
2013-Feb-10 18:06:12.592 INFO core Detected Dwarf Fortress version "v0.34.11 (graphics)" using MemoryLayout from "C:/Users/Sarah/Desktop/DwarfTherapist/etc/memory_layouts/windows/v0.34.11_graphics.ini" [src\dfinstance.cpp:1266] (get_memory_layout)
2013-Feb-10 18:06:12.592 DEBUG core base address: "0x00dc0000" [src\dfinstancewindows.cpp:263] (find_running_copy)
2013-Feb-10 18:06:12.592 DEBUG core memory correction: "0x009c0000" [src\dfinstancewindows.cpp:264] (find_running_copy)
2013-Feb-10 18:06:12.598 DEBUG core MEMORY SEGMENT SUMMARY: accepted 844 rejected 298 total 1142 [src\dfinstancewindows.cpp:370] (map_virtual_memory)
2013-Feb-10 18:06:12.598 DEBUG core GetModuleFileNameEx returned: "C:\Users\Sarah\Desktop\MasterworkDF 2f\Dwarf Fortress\Dwarf Fortress.exe" [src\dfinstancewindows.cpp:277] (find_running_copy)
2013-Feb-10 18:06:12.598 INFO core Dwarf fortress path: "C:/Users/Sarah/Desktop/MasterworkDF 2f/Dwarf Fortress" [src\dfinstancewindows.cpp:280] (find_running_copy)
2013-Feb-10 18:06:12.602 DEBUG core Connection to DF version "v0.34.11 (graphics)" established. [src\mainwindow.cpp:322] (connect_to_df)
2013-Feb-10 18:06:12.607 DEBUG core MEMORY SEGMENT SUMMARY: accepted 844 rejected 298 total 1142 [src\dfinstancewindows.cpp:370] (map_virtual_memory)
2013-Feb-10 18:06:12.607 DEBUG core Loading language translation tables [src\languages.cpp:53] (load_data)
2013-Feb-10 18:06:12.607 DEBUG core Loading generic strings from 222e8e0 [src\languages.cpp:67] (load_data)
2013-Feb-10 18:06:12.607 DEBUG core generic words 0 [src\languages.cpp:69] (load_data)
2013-Feb-10 18:06:12.645 INFO core Loaded 8 views from disk [src\viewmanager.cpp:139] (reload_views)
2013-Feb-10 18:06:12.651 DEBUG core MEMORY SEGMENT SUMMARY: accepted 844 rejected 298 total 1142 [src\dfinstancewindows.cpp:370] (map_virtual_memory)
2013-Feb-10 18:06:12.651 DEBUG core loading creatures from "0x021ea988" "0x0182a988" (UNCORRECTED) [src\dfinstance.cpp:372] (load_dwarves)
2013-Feb-10 18:06:12.651 DEBUG core dwarf race index "0x02016ffc" "0x01656ffc" (UNCORRECTED) [src\dfinstance.cpp:374] (load_dwarves)
2013-Feb-10 18:06:12.651 DEBUG core current year "0x01a1d32c" "0x0105d32c" (UNCORRECTED) [src\dfinstance.cpp:376] (load_dwarves)
2013-Feb-10 18:06:12.651 DEBUG core civilization id: "0x00000000" [src\dfinstance.cpp:382] (load_dwarves)
2013-Feb-10 18:06:12.651 DEBUG core dwarf race: "0x00000000" [src\dfinstance.cpp:386] (load_dwarves)
2013-Feb-10 18:06:12.651 DEBUG core current year: 0 [src\dfinstance.cpp:389] (load_dwarves)
2013-Feb-10 18:06:12.651 DEBUG core no active units (embark) using full unit list [src\dfinstance.cpp:788] (get_creatures)
EDITED: The issue described below was resolved after I created another user account on my PC. My original was an Administrator, so it wasn't an access issue. My next question would be if Dwarf Therapist requires the creation of registry keys, which is an issue I have had in the past with the computer.no there aren't any registry keys written by DT. try renaming your Dwarf Therapist.ini file (users\your_username_here\appdata\roaming\udp software\dwarf therapist.ini) and run DT.
------
I am cross-posting this from the Masterwork thread, since I'm still not entirely sure which dev team would be most likely to know what's going on here --
When I attempt to run the copy of Dwarf Therapist bundled with the current version of Masterwork (alpha 2f), I get a "DwarfTherapist.exe has stopped working" error the moment after the screen for it pops up. This occurs regardless of whether DF is running or where the exe is placed. I also rebooted my PC (because turning it off and on again is the best IT advice I've ever given).
When I attempt a version of Dwarf Therapist (Version 0.6.12 - Branch 16.1) that was bundled with an older copy of Masterwork, it runs as expected.
The following is the log from D Therapist:Spoiler: log file (click to show/hide)
Just out of mild curiosity: What are you (maklak), thistleknot and to some extend, splinterz, trying to do with this? I saw long posts by all three of you for pages without end...Maklak is correct in what he answered in his edit in the last post. currently role calculations just take into account the attribute's value. the idea was to see if there was a way to incorporate both the cost to improve an attribute, and a creature's maximum attainable value into the role's rating system for attributes. to put it bluntly, i wanted to know if there was a way to value a dwarf with very fast attribute gain, or a high potential attribute value in addition to the raw value.
Don't attributes train really slowly? I can see why an advanced user might say Oh I sort of care what their potential is, but then a very advanced user might say Who cares who will potentially be better in 35 years, both dwarfs will be dead by then ^^ I guess you guys are taking all that in to account, or trying your best to at least.it's pretty much for you modders. the default game rates are pretty slow and won't have an effect (for the cost to improve that is) since they're virtually all the same. the maximum values for each attribute change for each dwarf, so that can give a bit of a bonus. i'm adding in an option to choose a weight setting for this stuff like all the other role mechanics, so you have the option to ignore the potential rating entirely.
i'm adding in an option to choose a weight setting for this stuff like all the other role mechanics, so you have the option to ignore the potential rating entirely.
Don't attributes train really slowly? I can see why an advanced user might say Oh I sort of care what their potential is, but then a very advanced user might say Who cares who will potentially be better in 35 years.I've brought this up already and it was discussed. My solution was to take a 10 year old fort and dump maximum gains and maximum rust for all Dwarves for each attributes to have a good estimate of what an average overseer might expect, then use similar values to simulate gaining attributes, which factors in current attribute value, cap and cost to improve. My proposal was shot down, but it looks like the counter-proposal will work too, just not as smoothly.
> mk. i noticed yours and my formulas graphed more similar when att_sim was 5000
5000 is too unrealistic and even 2000 is already on the high side. Even the soldiers usually gain "only" 1000-1500 within a few years. By setting att_sim to 5000 the cap becomes more important than the current value. This may be what you're aiming for, but I find using the current value to be more practical than the cap. Smaller att_sim makes the cap important if you're already close to it, but otherwise it's return value is based on the current attribute value.
For sim3 the current attribute value is much more important, while your function values the cap more.
to derail the current discussion which i honestly cant wrap my head around, the military role advisor is kinda missing... (in the military tab, the whole melee, ranged, blah, blah stuff)i'm not sure what you're asking here. if you're talking about a lack of default military roles, have you tried the alternate military view?
if its related to what's currently being discussed, okay.
also, for brevity's sake, self-compiled DT v0.19.3 on linux.
ah, yes, i've managed to totally miss the lack of that tab -.-to derail the current discussion which i honestly cant wrap my head around, the military role advisor is kinda missing... (in the military tab, the whole melee, ranged, blah, blah stuff)i'm not sure what you're asking here. if you're talking about a lack of default military roles, have you tried the alternate military view?
if its related to what's currently being discussed, okay.
also, for brevity's sake, self-compiled DT v0.19.3 on linux.
no worries, you're certainly not the first one :) additionally if you find the roles, or the view lacking, you can always create custom military roles, and then add them to your own custom view.ah, yes, i've managed to totally miss the lack of that tab -.-to derail the current discussion which i honestly cant wrap my head around, the military role advisor is kinda missing... (in the military tab, the whole melee, ranged, blah, blah stuff)i'm not sure what you're asking here. if you're talking about a lack of default military roles, have you tried the alternate military view?
if its related to what's currently being discussed, okay.
also, for brevity's sake, self-compiled DT v0.19.3 on linux.
sorry bout that.
My Dwarf therapist does not have an Attributes Tab (I only see Military, Labors, Social) Why is this? How can I turn it on?there should be an "Add" option to the left of your first tab, which is usual Labors, that drops down to list all the tabs you can add, one of which is attributes