+2
-1
apps/skillulator/src/routes/c/$class/components/Skill.tsx
+2
-1
apps/skillulator/src/routes/c/$class/components/Skill.tsx
···
136
</div>
137
{/* <DecreaseSkillPointButton {...props} /> */}
138
<IncreaseSkillToMaxButton
139
-
skillId={variation.id}
140
jobId={props.jobId}
141
isSelectedMasterVariation={isSelectedMasterVariation}
142
hasMinLevelRequirements={variation?.hasMinLevelRequirements}
143
isMaxed={variation?.isMaxed}
144
/>
···
136
</div>
137
{/* <DecreaseSkillPointButton {...props} /> */}
138
<IncreaseSkillToMaxButton
139
+
skillId={props.skill.id}
140
jobId={props.jobId}
141
isSelectedMasterVariation={isSelectedMasterVariation}
142
+
masterVariationSkillId={variation.id}
143
hasMinLevelRequirements={variation?.hasMinLevelRequirements}
144
isMaxed={variation?.isMaxed}
145
/>
+51
-2
apps/skillulator/src/zustand/treeStore.ts
+51
-2
apps/skillulator/src/zustand/treeStore.ts
···
26
skillId: number;
27
masterVariationSkillId?: number;
28
}) => void;
29
-
increaseSkillToMax: (jobId: number, skillId: number) => void;
30
decreaseSkillPoint: ({
31
jobId,
32
skillId,
···
219
return state;
220
}),
221
),
222
-
increaseSkillToMax: (skillId: number, jobId: number) =>
223
set(
224
produce((state: State) => {
225
const job = getJobById(jobId, state.jobTree);
226
if (!job) return state;
227
228
const skill = getSkillById(skillId, job.skills);
229
if (!skill) return state;
230
231
if (skill.levels === skill.skillLevel) return state;
···
26
skillId: number;
27
masterVariationSkillId?: number;
28
}) => void;
29
+
increaseSkillToMax: ({
30
+
jobId,
31
+
skillId,
32
+
masterVariationSkillId,
33
+
}: {
34
+
jobId: number;
35
+
skillId: number;
36
+
masterVariationSkillId?: number;
37
+
}) => void;
38
decreaseSkillPoint: ({
39
jobId,
40
skillId,
···
227
return state;
228
}),
229
),
230
+
increaseSkillToMax: ({
231
+
jobId,
232
+
skillId,
233
+
masterVariationSkillId,
234
+
}: {
235
+
jobId: number;
236
+
skillId: number;
237
+
masterVariationSkillId?: number;
238
+
}) =>
239
set(
240
produce((state: State) => {
241
const job = getJobById(jobId, state.jobTree);
242
if (!job) return state;
243
244
const skill = getSkillById(skillId, job.skills);
245
+
if (
246
+
skill?.masterVariations?.length &&
247
+
typeof masterVariationSkillId !== "undefined"
248
+
) {
249
+
if (!masterVariationSkillId) return state;
250
+
const masterVariationSkill = getSkillById(
251
+
masterVariationSkillId,
252
+
skill.masterVariations,
253
+
);
254
+
255
+
if (!masterVariationSkill) return state;
256
+
if (masterVariationSkill.levels === masterVariationSkill.skillLevel)
257
+
return state;
258
+
259
+
const maxPossibleLevel = Math.min(
260
+
masterVariationSkill.levels,
261
+
Math.floor(state.skillPoints / masterVariationSkill.points),
262
+
);
263
+
264
+
if (maxPossibleLevel > masterVariationSkill.skillLevel) {
265
+
const levelsToAdd =
266
+
maxPossibleLevel - masterVariationSkill.skillLevel;
267
+
masterVariationSkill.skillLevel = maxPossibleLevel;
268
+
state.skillPoints -= levelsToAdd * masterVariationSkill.points;
269
+
}
270
+
271
+
updateSkillRequirements(
272
+
job,
273
+
masterVariationSkillId,
274
+
masterVariationSkill.skillLevel,
275
+
);
276
+
return state;
277
+
}
278
if (!skill) return state;
279
280
if (skill.levels === skill.skillLevel) return state;