Commit 7d44dca251802172fcfbfbc168c417010d2cc833
1 parent
f9c6cac9
支援技能升级逻辑
Showing
2 changed files
with
35 additions
and
0 deletions
Show diff stats
src/ProtocolCode.lua
src/actions/DinerAction.lua
... | ... | @@ -164,4 +164,38 @@ function _M.talentUpRpc( agent, data ) |
164 | 164 | return true |
165 | 165 | end |
166 | 166 | |
167 | +function _M.skillUpRpc( agent, data ) | |
168 | + local role = agent.role | |
169 | + local msg = MsgPack.unpack(data) | |
170 | + | |
171 | + local skill = msg.skill | |
172 | + local skillSet = csvdb["diner_skillCsv"][skill] | |
173 | + if not skillSet then | |
174 | + return | |
175 | + end | |
176 | + | |
177 | + local skillTree = role.dinerData:getProperty("skillTree") | |
178 | + local skillLevel = skillTree:getv(skill, 1) | |
179 | + local skillData = skillSet[skillLevel] | |
180 | + if not skillData then | |
181 | + return | |
182 | + end | |
183 | + if skillData.unlock ~= "" then | |
184 | + local id, level = skillData.unlock:math("(%d+)=(%d+)") | |
185 | + if skillTree:getv(tonumber(id), 1) < tonumber(level) then | |
186 | + return | |
187 | + end | |
188 | + end | |
189 | + local cost = skillData.cost:toNumMap() | |
190 | + if not role:checkItemEnough(cost) then | |
191 | + return | |
192 | + end | |
193 | + | |
194 | + role:costItems(cost) | |
195 | + role.dinerData:updateProperty({field = "skillTree", value = skillTree:setv(skill, skillLevel + 1)}) | |
196 | + | |
197 | + SendPacket(actionCodes.Diner_skillUpRpc, '') | |
198 | + return true | |
199 | +end | |
200 | + | |
167 | 201 | return _M |
168 | 202 | \ No newline at end of file | ... | ... |