Code Monkey home page Code Monkey logo

dwarf-therapist's Introduction

Dwarf Therapist

image

image

This is a heavily modified version of the original Dwarf Therapist.

Many new features (attributes, roles, optimization plans, health views, inventory, etc.) have been added, and many bugs have been resolved.

If you'd like to help support this project:

Buy me a Beer! ... and I'll have happy thoughts ...

The changelog is available at GitHub.

Latest Release ======== The latest release is always published in the project's releases page. These releases normally contain packages for Windows and OSX.

Alternate Download (DFFD)

If the latest published releases do not contain a package, they may be found on DFFD.

Windows 32-bit

OSX

Linux

There is currently no official package for Linux. You can find the instructions to build from source in BUILDING.rst.

Running the program

On default installations of most Debian-based distributions, you'll most likely need to run Dwarf Therapist with sudo. This is due to the Yama ptrace LSM enabled by default on such distros. You can explicitly give Dwarf Therapist permission to ptrace on Debian-based distributions with:

sudo apt-get install libcap2-bin && sudo setcap cap_sys_ptrace=eip ./bin/release/DwarfTherapist

Or, you can create a script that will run Dwarf Therapist as a child of Dwarf Fortress:

#!/bin/bash
set -e
cd df_linux
./df &
cd ../dwarftherapist
exec ./bin/release/DwarfTherapist

Alternatively, you can use the dist/dwarftherapist wrapper to automatically grant DT permissions to attach to a running DF process.

Support

Primary support is available at the Dwarf Therapist thread at the Bay 12 Forums; if you are sure you have found a bug, file an issue at the GitHub issue tracker. Provide as much information as possible to help reproduce the issue. Most runtime bugs will require you to send a save, preferably uploaded at DFFD. You may also be requested to provide a log, which is saved in log/log.txt on Windows and OSX and output to stderr on Linux systems (use 2> log.txt to collect).

You can also join us in #dwarftherapist on Freenode.

dwarf-therapist's People

Contributors

abesto avatar adammartinez271828 avatar backerman avatar carbohydratesn avatar ehlertjd avatar enewton4 avatar ericfont avatar felliott avatar fricy avatar g19fanatic avatar hello71 avatar insolor avatar int-ua avatar jarmar avatar kiryl avatar klassekatze avatar lethosor avatar marian-kadanka avatar myk002 avatar nikow avatar peridexiserrant avatar ramblurr avatar splintermind avatar spooq avatar stoutheart avatar sv-esk avatar tareqak avatar thistleknot avatar wrar avatar zohan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dwarf-therapist's Issues

Expand the filter text field

Fill the text filter with currently existing filters in addition to only the names. For example, clicking a health item in the dock window applies a filter. Typing in the filter field should provide a player with a list of the same health filters.

The same could be applied to thoughts, scripts, preferences, etc.

What about two-handed wielding?

A quick look at the two-handed sword column in the military view finds this:

http://i.imgur.com/4jKUfbE.png

It's not quite right to say that they can't wield the weapon, rather that they can't wield it in one hand. Besides, two-handed swords are multigrasp---you don't want to wield them in one hand anyway.

Check general child/baby names in addition to caste names.

Some mods only use the general child/baby name and don't include a caste child/baby name. This results in names like 'giant drowspider baby' instead of 'giant drowspiderling'.

Minor issue since it only affects mods really. Would require a few more offsets to be read and checked when building the names.

Better Launcher Script

Idea from https://bugs.launchpad.net/getdeb.net/+bug/1332894
Something like (untested):
edit: support dfhack

#!/usr/bin/env bash

dt_data="/usr/share/dwarftherapist"
dt_bin="/usr/bin/DwarfTherapist"
dt_getcap="cap_sys_ptrace=pie"
ptrace_scope="/proc/sys/kernel/yama/ptrace_scope"
root_programs=( kdesudo gksudo sudo )

for name in "${root_programs[@]}"; do
  if root="$(type -P "$name" &>/dev/null)"; then
    break;
  fi
done

if [[ -f "$ptrace_scope" ]] && (("$(cat "$ptrace_scope")" == 1 )); then
  ptrace_protection=true
else
  ptrace_protection=false
fi

if type -P setcap &>/dev/null && setcap -v "$dt_getcap" "$dt_bin" &>/dev/null; then
  dt_setcap=true
else
  dt_setcap=false
fi

cd "$dt_data"

if (($# == 1)) && [[ -x "$1" ]]; then
  "$1" <&0 &
  exec "$dt_bin" &>/dev/null
fi

if $ptrace_protection && ! $dt_setcap; then
  if [[ -n "$root" ]]; then
    $root "$dt_bin"
  else
    printf "Error: %s\n" "Unable to gain root privileges" >&2
    exit 1
  fi
else
  "$dt_bin"
fi;

Missing include file on Ubuntu 14.04

On revision c140b0e

Following the instructions in BUILDING.txt, after installing the listed packages and running qmake -qt=5, make fails with the error fatal error: QtGui/QAction: No such file or directory #include <QtGui/QAction>. Running qmake without any flags yields the same error.

Is anyone able to verify that building on 14.04 works? If so, can you update the instructions with the full list of packages?

Segmentation fault on connect to DF.

Built from commit 5af43c1.

Core was generated by `bin/release/DwarfTherapist'.
Program terminated with signal SIGSEGV, Segmentation fault.
0 0x00000000006175e9 in UnitHealth::add_info(eHealth::H_INFO, bool, bool, bool, bool) ()
(gdb) bt
0 0x00000000006175e9 in UnitHealth::add_info(eHealth::H_INFO, bool, bool, bool, bool) ()
1 0x0000000000618f7c in UnitHealth::read_health_info() ()
2 0x000000000061c5fb in UnitHealth::UnitHealth(DFInstance_, Dwarf_, bool) ()
3 0x00000000005209ee in Dwarf::refresh_data() ()
4 0x0000000000521f29 in Dwarf::Dwarf(DFInstance_, unsigned int const&, QObject_) ()
5 0x000000000052359b in Dwarf::get_dwarf(DFInstance_, unsigned int const&) ()
6 0x00000000005509d1 in DFInstance::load_dwarves() ()
7 0x000000000056a254 in DwarfModel::load_dwarves() ()
8 0x00000000004a9f4a in MainWindow::read_dwarves() ()
9 0x00000000004abee8 in MainWindow::connect_to_df() ()
10 0x000000000065975c in MainWindow::qt_static_metacall(QObject_, QMetaObject::Call, int, void*) ()
11 0x00007f80ab15013a in QObject::event(QEvent
) () from /usr/lib/libQt5Core.so.5
12 0x00007f80ac2a8897 in QWidget::event(QEvent_) () from /usr/lib/libQt5Widgets.so.5
13 0x00007f80ac3c11ab in QMainWindow::event(QEvent_) () from /usr/lib/libQt5Widgets.so.5
14 0x00007f80ac26a15c in QApplicationPrivate::notify_helper(QObject_, QEvent_) () from /usr/lib/libQt5Widgets.so.5
15 0x00007f80ac26f6ee in QApplication::notify(QObject_, QEvent_) () from /usr/lib/libQt5Widgets.so.5
16 0x00007f80ab120aeb in QCoreApplication::notifyInternal(QObject_, QEvent_) () from /usr/lib/libQt5Core.so.5
17 0x00007f80ab122ab3 in QCoreApplicationPrivate::sendPostedEvents(QObject_, int, QThreadData_) () from /usr/lib/libQt5Core.so.5
18 0x00007f80ab177ad3 in ?? () from /usr/lib/libQt5Core.so.5
19 0x00007f80a9b92b84 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
20 0x00007f80a9b92dc8 in ?? () from /usr/lib/libglib-2.0.so.0
21 0x00007f80a9b92e6c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
22 0x00007f80ab177ec7 in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) ()
from /usr/lib/libQt5Core.so.5
23 0x00007f80ab11e512 in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/libQt5Core.so.5
24 0x00007f80ab125ecc in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
25 0x000000000042780b in main ()

Problem with libGL on Debian 64-bit linux

I compiled Dwarf Therapist (master branch, commit: 8d90add) just fine but when I run it, I get the error:

libGL error: failed to load driver: swrast

When I run "LIBGL_DEBUG=verbose ./DwarfTherapist" I get (full output):

libGL: screen 0 does not appear to be DRI3 capable
libGL: screen 0 does not appear to be DRI2 capable
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
libGL: driver does not expose __driDriverGetExtensions_swrast(): /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so: undefined symbol: __driDriverGetExtensions_swrast
libGL: Can't open configuration file /home/root/.drirc: No such file or directory.
libGL: Can't open configuration file /home/root/.drirc: No such file or directory.
libGL error: failed to load driver: swrast

I am running Debian jessie 64-bit and had to install a few i386 packages to get Dwarf Fortress running. I notice Dwarf Therapist loads the 64-bit "swrast_dri.so" driver but haven't found out a way to make it load the 32 bit version (if that's even required).

glxinfo also complains about the same "libGL: driver does not expose __driDriverGetExtensions_swrast()" but I only have issues with getting Dwarf Therapist running, everything else works fine.

Specifications:

Kernel: Linux home 3.14-1-amd64 #1 SMP Debian 3.14.9-1 (2014-06-30) x86_64 GNU/Linux
Distro: Debian jessie (testing)
Desktop Environment: Xfce 4.10
Video Driver: nvidia proprietary, 340.17, 3.14-1-amd64, x86_64
libGL version: 10.2.2

Output from "LIBGL_DEBUG=verbose glxinfo": pastebin.

Can you assist me with diagnosing the error?

QtWidgets: No such file or directory

[James@localhost Dwarf-Therapist-master]$ make
/usr/lib/qt4/bin/qmake -o Makefile dwarftherapist.pro
Project MESSAGE: Release Mode
Project MESSAGE: Setting up for Linux
Project MESSAGE: Setting up for Linux Install
g++ -c -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_SCRIPT_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtNetwork -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include/QtScript -I/usr/include -Iinc -Iinc/models -Iinc/grid_view -Iinc/docks -Iui -Ithirdparty/qtcolorpicker-2.6 -Ibin/release -Ibin/release -o bin/release/dfinstancelinux.o src/dfinstancelinux.cpp
src/dfinstancelinux.cpp:23:21: fatal error: QtWidgets: No such file or directory
#include
^
compilation terminated.
make: *** [bin/release/dfinstancelinux.o] Error 1

I have been at this for hours and i still can't get it to work.

establishing 40.01 compatibility

Hello,
I'm interested in helping with this project.

40.01 is shiny, new, and incompatible.

When you start mapping the memory, do you tend to use a memory dump?

Seperate custom roles from pre-defined roles in the custom view definition window

Custom professions are split from pre-defined professions for the purposes of adding their columns to your views, but custom roles are folded in with pre-defined ones (presumably, because they came much earlier). For the purposes of parallelism it would be smart to tease them out into their own category. Minor improvement.

DT closes and reopens DF memory for every read/write

This seems inefficient:

$ strace -fe open,close bin/release/DwarfTherapist
[pid  9459] open("/proc/8816/mem", O_RDONLY|O_CLOEXEC) = 11
[pid  9459] close(11)                   = 0
[pid  9459] open("/proc/8816/mem", O_RDONLY|O_CLOEXEC) = 11
[pid  9459] close(11)                   = 0
[pid  9459] open("/proc/8816/mem", O_RDONLY|O_CLOEXEC) = 11
[pid  9459] close(11)                   = 0
[pid  9459] open("/proc/8816/mem", O_RDONLY|O_CLOEXEC) = 11
[pid  9459] close(11)                   = 0
[pid  9459] open("/proc/8816/mem", O_RDONLY|O_CLOEXEC) = 11
[pid  9459] close(11)                   = 0
[pid  9459] open("/proc/8816/mem", O_RDONLY|O_CLOEXEC) = 11
[pid  9459] close(11)                   = 0
[pid  9459] open("/proc/8816/mem", O_RDONLY|O_CLOEXEC) = 11
[pid  9459] close(11)                   = 0
[pid  9459] open("/proc/8816/mem", O_RDONLY|O_CLOEXEC) = 11
[pid  9459] close(11)                   = 0
[pid  9459] open("/proc/8816/mem", O_RDONLY|O_CLOEXEC) = 11
[pid  9459] close(11)                   = 0
[pid  9459] open("/proc/8816/mem", O_RDONLY|O_CLOEXEC) = 11
[pid  9459] close(11)                   = 0
[pid  9459] open("/proc/8816/mem", O_RDONLY|O_CLOEXEC) = 11
[pid  9459] close(11)                   = 0
[pid  9459] open("/proc/8816/mem", O_RDONLY|O_CLOEXEC) = 11
[pid  9459] close(11)                   = 0

and on and on for hundreds of thousands of pages

Additional labor gradient for super-labors.

When a dwarf has almost, but not quite, all of the labors in a super-labor column enabled, the column is filled in in a manner that is synonymous to the "all labors enabled" one, which is misleading. You should introduce another in-between color for when a lot but not all labors are enabled, and leave the fully colored-in box for fully enabled super-labors.

Screencap of what I mean:

http://i.imgur.com/x36eNA4.png

OS X - Setting nickname + custom profession simultaneously causes corruption

Related to issue #14 - Setting both a nickname and a custom profession on the same dwarf before committing can cause undefined behaviour. I've seen the following happen:

  1. Dwarf Fortress crashes on commit.
  2. The dwarf gets filed under a corrupted profession name in Dwarf Therapist.
  3. The dwarf shows up as ' under the correct profession, and using 'Set Nickname...' again shows the nickname to be a long series of non-ascii characters (clearly a chunk of memory with nothing to do with the nickname).

So far setting the nickname and committing, or setting the custom profession and committing; seems to work. But doing both is bad.

OSX crashes after admin pwd

Happens after DT asks for the admin password.

Crashed Thread: 0 Dispatch queue: com.apple.main-thread

Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000

Application Specific Information:
objc[5970]: garbage collection is OFF
*** error for object 0x1003a7d70: pointer being freed was not allocated

Custom professions no longer sorted

Hi,

Previously all custom professions was sorted alphabetically in Dwarf Therapist. This does not seem to be the case anymore in latest HEAD from git.

Would it be possible to sort custom professions? Makes it easier to find the correct custom professions in the list.

Segfault in initializeDb () at text/qfontdatabase.cpp:785 from /usr/lib64/libQt5Gui.so.5

This is not an acceptable method of exiting.

Could not open  "$PWD/log/run.log"  for writing! "No such file or directory"

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7405555 in initializeDb() () from /usr/lib64/libQt5Gui.so.5
(gdb) bt
#0  0x00007ffff7405555 in initializeDb() () from /usr/lib64/libQt5Gui.so.5
#1  0x00007ffff7407185 in QFontDatabase::findFont(int, QFontPrivate const*, QFontDef const&, bool) () from /usr/lib64/libQt5Gui.so.5
#2  0x00007ffff740849e in QFontDatabase::load(QFontPrivate const*, int) () from /usr/lib64/libQt5Gui.so.5
#3  0x00007ffff73e2167 in QFontPrivate::engineForScript(int) const () from /usr/lib64/libQt5Gui.so.5
#4  0x00007ffff73fd953 in QFontMetrics::lineSpacing() const () from /usr/lib64/libQt5Gui.so.5
#5  0x00007ffff7c36cc8 in QLabelPrivate::sizeForWidth(int) const () from /usr/lib64/libQt5Widgets.so.5
#6  0x00007ffff7c37097 in QLabel::minimumSizeHint() const () from /usr/lib64/libQt5Widgets.so.5
#7  0x00007ffff7c37143 in QLabel::sizeHint() const () from /usr/lib64/libQt5Widgets.so.5
#8  0x00007ffff7b4440c in QWidgetItemV2::updateCacheIfNecessary() const () from /usr/lib64/libQt5Widgets.so.5
#9  0x00007ffff7b4470d in QWidgetItemV2::maximumSize() const () from /usr/lib64/libQt5Widgets.so.5
#10 0x00007ffff7b3395d in QBoxLayoutPrivate::setupGeom() [clone .part.31] () from /usr/lib64/libQt5Widgets.so.5
#11 0x00007ffff7b345ae in QBoxLayout::maximumSize() const () from /usr/lib64/libQt5Widgets.so.5
#12 0x00007ffff7b3395d in QBoxLayoutPrivate::setupGeom() [clone .part.31] () from /usr/lib64/libQt5Widgets.so.5
#13 0x00007ffff7b34b48 in QBoxLayout::setGeometry(QRect const&) () from /usr/lib64/libQt5Widgets.so.5
#14 0x00007ffff7b4050e in QLayoutPrivate::doResize(QSize const&) () from /usr/lib64/libQt5Widgets.so.5
#15 0x00007ffff7b41c90 in QLayout::activate() () from /usr/lib64/libQt5Widgets.so.5
#16 0x00007ffff7b5cbf3 in QWidget::setVisible(bool) () from /usr/lib64/libQt5Widgets.so.5
#17 0x00007ffff7b46181 in QStackedLayout::setCurrentIndex(int) () from /usr/lib64/libQt5Widgets.so.5
#18 0x00007ffff7b4658a in QStackedLayout::insertWidget(int, QWidget*) () from /usr/lib64/libQt5Widgets.so.5
#19 0x00007ffff7c97cf7 in QTabWidget::insertTab(int, QWidget*, QIcon const&, QString const&) () from /usr/lib64/libQt5Widgets.so.5
#20 0x000000000048bb2b in Ui_OptionsMenu::setupUi(QDialog*) ()
#21 0x000000000047e9ba in OptionsMenu::OptionsMenu(QWidget*) ()
#22 0x00000000004e1e31 in DwarfTherapist::DwarfTherapist(int&, char**) ()
#23 0x00000000004b337a in main ()

make uninstall doesn't remove all files

In looking at the Makefile and doing a few make install/make uninstalls, I've found that the automated uninstall process doesn't remove a couple files.

It fails to remove

  • /usr/share/doc/dwarftherapist/README.Debian
  • /usr/share/dwarftherapist/*

I've never worked with make before, but I will try my hand at fixing this and submitting a pull request. If it's garbage, sorry.

Error while building on Linux

question

(I have absolutely no idea how to tag issues, so Ill do it like this)
I was building the source to run on Linux. Ran the make command, got this error:

make: g++: Command not found
make: *** [bin/release/dfinstancelinux.o] Error 127

How to fix?

Disabling global weights of multiple categories leads to roles reporting 0 vs 50%

If I say, disable all weights but skill, or preferences. Roles that don't have any defined skills [or peferences, depending on scenario] will report 0% when they should report 50%.

50% means neither good nor bad, Labelling all dwarf's for a role as 0% because the role has nothing defined to give it a value (aka preferences or skills, depending on scenario), means that roles that do have preferences defined, but 0 matches are found, will lead to a higher % reported for those roles (0 values are padded due to the way skewed distributions are handled) than roles that do not have any preferences defined

Add a "Professions" option to the Super Labor creation window

Currently when you want to assign a super labor which parallels a profession, you have to manually select the jobs in that super labor. It would be helpful to add a Profession drop-down in this window: when you select a profession in the drop-down, the correct jobs are automatically toggled on, and the others are toggled off. This would save on the effort required in assigning jobs twices.

Script window's help information isn't read-only and is outdated

If you click on the reference pane in the filter script definition window you can add, subtract, delete, and add characters---basically anything you can expect to do with a standard TXT file you can do in the pane, and the changes seem to persist. I don't think this is intentional behavior.

  • Set script help information to read-only
  • Update script help information with recently added functions

filter dwarfs by age

I would like the ability to filter dwarfs by age. When I am assigning labors, I do not want to train dwarfes older than some age, so when they die of old age, the experience they gained will be lost. I think, this will be generally useful.

Enhancements to the behavior of "Armor" columns

I'm a little confused by what these options are meant to achieve. The "Equipment" column you've added to the views should handle clothing concerns just fine: these columns should be reserved for telling you whether or not your dwarves have armor armor equipped, ae. breastplates, greaves, etc. etc.

Detachment misc. trait isn't shown

The miscellaneous trait for detachment (doesn't care anymore, is hardened, etc.) could be lumped in with the personality traits (although it's different).

Requested change in default optimization behavior

Currently an optimization plan that is run when no dwarves are selected will be run on all dwarves visible in the view. Perhaps it would be more prudent to disable the feature when no dwarves are selected (greying out the Optimize button in the main toolbar in particular), so as to prevent the user from accidentally screwing up their fortress's labor settings.

Location of game_data.ini on GNU/Linux

Hi,

I'm attempting to create a Dwarf Therapist ebuild (used by the package manager in Gentoo). However i stumbled upon this weird behaviour of game_data.ini. When Dwarf Therapist is installed it looks for game_data.ini in $HOME/etc instead of the installed location of game_data.ini (/usr/share/dwarftherapist/etc/game_data.ini).

Actual home directory replaced by $HOME.

getcwd("$HOME", 4096)             = 12
lstat("$HOME/etc/game_data.ini", 0x7fff42ccb380) = -1 ENOENT (No such file or directory)
open("$HOME/etc/game_data.ini", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("$HOME/etc/game_data.ini", 0x7fff42ccb3e0) = -1 ENOENT (No such file or directory)
stat("$HOME/etc/game_data.ini", 0x7fff42ccb3a0) = -1 ENOENT (No such file or directory)

After $HOME/etc was created and game_data.ini copied into that directory it worked.

Uncertain if I had done something wrong in the ebuild I compiled and built Dwarf Therapist from source manually and followed the supplied instructions (qmake, make, make install).
Interestingly enough it when I started Dwarf-Therapist (from /usr/bin/Dwarf-Therapist) it worked. However further investigation showed that it found game_data.ini in my build directory and not in /usr/share/dwarftherapist/etc).

lstat("$HOME/temp/dwarftherapist/etc/game_data.ini", {st_mode=S_IFREG|0644, st_size=187006, ...}) = 0
open("$HOME/temp/dwarftherapist/etc/game_data.ini", O_RDONLY|O_CLOEXEC) = 11
stat("$HOME/temp/dwarftherapist/etc/game_data.ini", {st_mode=S_IFREG|0644, st_size=187006, ...}) = 0

When $HOME/temp/dwarftherapist was moved it stopped working since it was unable to find game_data.ini.

Dwarf Therapist does not seem to look for game_data.ini in the correct location or am I missing something?

Windows: Building with QT creator per Building.txt fails

I tried to build the project in Windows 7 AMD64, following the directions in Building.txt, it failed:

jom: C:\Users########\Documents\GitHub\build-dwarftherapist-Desktop_Qt_5_3_MSVC2013_64bit-Debug\Makefile [debug] Error 2
12:21:38: The process "C:\Qt\Tools\QtCreator\bin\jom.exe" exited with code 2.
Error while building/deploying project dwarftherapist (kit: Desktop Qt 5.3 MSVC2013 64bit)
When executing step 'Make'
12:21:38: Elapsed time: 01:35.

Implement a numerical labor optimizer

Currently the Dwarf Therapist labor optimizer only works in terms of ratios---select a certain number of dwarves, and the optimizer will assign labors to a certain percentage of them defined in the plan by the user.

A suggested feature enhancement would be the addition of a "numerical" labor optimizer, which is only applied to a certain specified number of dwarves in a selection. For instance: instead of assigning wood burning and furnace operating to one half of dwarves selected, a numerical optimizer will assign the labors to exactly four of them. Should the user select fewer dwarves then called for in the plan, Dwarf Therapist will return an error message.

Such a feature would allow for the creation of more useful scripts, like industry-starter plans and military-conscription plans, then currently possible.

You can approximate this feature by doing a little bit of math and dividing the number of dwarves you want optimized by the number you have selected, and inputting this into "percent total jobs". The idea is to make this process automatic.

Note that such a feature would require avoiding the labor optimizer's current default behavior of turning off all labors not assigned, even those on dwarves who are not assigned any labors by the plan.

Default Settings and options.

  • Switch the Labor and Labor Alt views
  • Enable synchronize view scroll positions by default
  • Make text (ae. numbers) the default cell drawing method
  • Enable nobility highlighting
  • Add more default nobility colors:
    • Nobility/Royalty: Magenta
    • Law: Green
    • Militia: Blue
    • Multiple: Taupe
    • Chief Medical: Red
    • Others: Gold
  • Add an option to decorate noble names (italicized with symbol)
  • Include some useful default scripts

Ability to Sort Animals by Caste

Enhancement:
Include the ability to sort the animal list by caste.
This would help make it easier to butch and worry less about killing off your last mating pair.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.