a collection of tools for fly for fun universe skillulator.lol

fix skill increases on skills with master variations

besaid.zone 63c35a64 93f28f30

verified
Changed files
+52 -5
apps
skillulator
src
routes
c
$class
components
zustand
+10 -2
apps/skillulator/src/routes/c/$class/components/action-buttons.tsx
··· 74 74 if (!props.jobId) return; 75 75 event.preventDefault(); 76 76 if (event.key === "ArrowDown") { 77 - decreaseSkillPoint(props.jobId, props.skill.id); 77 + decreaseSkillPoint({ 78 + jobId: props.jobId, 79 + skillId: props.skill.id, 80 + masterVariationSkillId: props.masterVariationSkillId, 81 + }); 78 82 } else if (event.key === "ArrowUp") { 79 83 increaseSkillPoint({ 80 84 jobId: props.jobId, ··· 98 102 onContextMenu={(event) => { 99 103 if (!props.jobId) return; 100 104 event.preventDefault(); 101 - decreaseSkillPoint(props.jobId, props.skill.id); 105 + decreaseSkillPoint({ 106 + jobId: props.jobId, 107 + skillId: props.skill.id, 108 + masterVariationSkillId: props.masterVariationSkillId, 109 + }); 102 110 }} 103 111 disabled={!props.hasMinLevelRequirements} 104 112 className="flex flex-col items-center disabled:cursor-not-allowed"
+42 -3
apps/skillulator/src/zustand/treeStore.ts
··· 26 26 masterVariationSkillId?: number; 27 27 }) => void; 28 28 increaseSkillToMax: (jobId: number, skillId: number) => void; 29 - decreaseSkillPoint: (jobId: number, skillId: number) => void; 29 + decreaseSkillPoint: ({ 30 + jobId, 31 + skillId, 32 + masterVariationSkillId, 33 + }: { 34 + jobId: number; 35 + skillId: number; 36 + masterVariationSkillId?: number; 37 + }) => void; 30 38 initSkillPoints: (jobId: number, characterLevel: number) => void; 31 39 32 40 createPreloadedSkillTree: ( ··· 84 92 * Master variation skills don't live in the outer skill array, only within the skill they are variations of... 85 93 */ 86 94 const skill = getSkillById(skillId, job.skills); 87 - if (skill?.masterVariations?.length) { 95 + if ( 96 + skill?.masterVariations?.length && 97 + typeof masterVariationSkillId !== "undefined" 98 + ) { 88 99 if (!masterVariationSkillId) return state; 89 100 const masterVariationSkill = getSkillById( 90 101 masterVariationSkillId, ··· 120 131 return state; 121 132 }), 122 133 ), 123 - decreaseSkillPoint: (jobId: number, skillId: number) => 134 + decreaseSkillPoint: ({ 135 + jobId, 136 + skillId, 137 + masterVariationSkillId, 138 + }: { jobId: number; skillId: number; masterVariationSkillId?: number }) => 124 139 set( 125 140 produce((state: State) => { 126 141 const job = getJobById(jobId, state.jobTree); 127 142 if (!job) return state; 128 143 129 144 const skill = getSkillById(skillId, job.skills); 145 + if ( 146 + skill?.masterVariations?.length && 147 + typeof masterVariationSkillId !== "undefined" 148 + ) { 149 + if (!masterVariationSkillId) return state; 150 + const masterVariationSkill = getSkillById( 151 + masterVariationSkillId, 152 + skill.masterVariations, 153 + ); 154 + 155 + if (!masterVariationSkill || masterVariationSkill.skillLevel === 0) 156 + return state; 157 + 158 + masterVariationSkill.skillLevel -= 1; 159 + state.skillPoints += masterVariationSkill.points; 160 + 161 + updateSkillRequirements( 162 + job, 163 + masterVariationSkillId, 164 + masterVariationSkill.skillLevel, 165 + ); 166 + return state; 167 + } 168 + 130 169 if (!skill || skill.skillLevel === 0) return state; 131 170 132 171 skill.skillLevel -= 1;