| 73 | } |
| 74 | |
| 75 | df::job_skill getMoodSkill (df::unit *unit) |
| 76 | { |
| 77 | if (!unit->status.current_soul) |
| 78 | return job_skill::STONECRAFT; |
| 79 | df::historical_entity *civ = df::historical_entity::find(unit->civ_id); |
| 80 | df::unit_soul *soul = unit->status.current_soul; |
| 81 | vector<df::job_skill> skills; |
| 82 | df::skill_rating level = skill_rating::Dabbling; |
| 83 | for (size_t i = 0; i < soul->skills.size(); i++) |
| 84 | { |
| 85 | df::unit_skill *skill = soul->skills[i]; |
| 86 | switch (skill->id) |
| 87 | { |
| 88 | case job_skill::MINING: |
| 89 | case job_skill::CARPENTRY: |
| 90 | case job_skill::ENGRAVE_STONE: |
| 91 | case job_skill::MASONRY: |
| 92 | case job_skill::TANNER: |
| 93 | case job_skill::WEAVING: |
| 94 | case job_skill::CLOTHESMAKING: |
| 95 | case job_skill::FORGE_WEAPON: |
| 96 | case job_skill::FORGE_ARMOR: |
| 97 | case job_skill::FORGE_FURNITURE: |
| 98 | case job_skill::CUTGEM: |
| 99 | case job_skill::ENCRUSTGEM: |
| 100 | case job_skill::WOODCRAFT: |
| 101 | case job_skill::STONECRAFT: |
| 102 | case job_skill::METALCRAFT: |
| 103 | case job_skill::GLASSMAKER: |
| 104 | case job_skill::LEATHERWORK: |
| 105 | case job_skill::BONECARVE: |
| 106 | case job_skill::BOWYER: |
| 107 | case job_skill::MECHANICS: |
| 108 | case job_skill::CUT_STONE: |
| 109 | case job_skill::CARVE_STONE: |
| 110 | if (skill->rating > level) |
| 111 | { |
| 112 | skills.clear(); |
| 113 | level = skill->rating; |
| 114 | } |
| 115 | if (skill->rating == level) |
| 116 | skills.push_back(skill->id); |
| 117 | break; |
| 118 | default: |
| 119 | break; |
| 120 | } |
| 121 | } |
| 122 | if (!skills.size() && civ) |
| 123 | { |
| 124 | if (civ->resources.permitted_skill[job_skill::WOODCRAFT]) |
| 125 | skills.push_back(job_skill::WOODCRAFT); |
| 126 | if (civ->resources.permitted_skill[job_skill::STONECRAFT]) |
| 127 | skills.push_back(job_skill::STONECRAFT); |
| 128 | if (civ->resources.permitted_skill[job_skill::BONECARVE]) |
| 129 | skills.push_back(job_skill::BONECARVE); |
| 130 | } |
| 131 | if (!skills.size()) |
| 132 | skills.push_back(job_skill::STONECRAFT); |
no test coverage detected