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 | ... | ... |