diff --git a/plugins/labormanager/labormanager.cpp b/plugins/labormanager/labormanager.cpp index 9f874edc0..262f7930f 100644 --- a/plugins/labormanager/labormanager.cpp +++ b/plugins/labormanager/labormanager.cpp @@ -70,6 +70,7 @@ #include #include #include +#include #include "labormanager.h" #include "joblabormapper.h" @@ -1518,6 +1519,26 @@ private: else if (altruism <= 24) score -= 50000; } + + // Favor/disfavor BUTCHER (covers slaughtering), HAUL_ANIMALS (covers caging), and CUTWOOD based on NATURE value + + if (labor == df::unit_labor::BUTCHER || labor == df::unit_labor::HAUL_ANIMALS || labor == df::unit_labor::CUTWOOD) + { + int nature = 0; + for (auto i = d->dwarf->status.current_soul->personality.values.begin(); + i != d->dwarf->status.current_soul->personality.values.end(); + i++) + { + if ((*i)->type == df::value_type::NATURE) + nature = (*i)->strength; + } + + if (nature <= -11) + score += 5000; + else if (nature >= 26) + score -= 50000; + } + // This should reweight assigning CUTWOOD jobs based on a citizen's ethic toward killing plants if (labor == df::unit_labor::CUTWOOD)