MCPcopy Create free account
hub / github.com/DFHack/dfhack / getMoodSkill

Function getMoodSkill

plugins/strangemood.cpp:75–134  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

73}
74
75df::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);

Callers 1

df_strangemoodFunction · 0.85

Calls 4

findFunction · 0.50
sizeMethod · 0.45
clearMethod · 0.45
df_trandomMethod · 0.45

Tested by

no test coverage detected