Commit d27ad5e0ce091b36e92ad8b84581a914de01252e
1 parent
b67cfabd
使用营养技
Showing
5 changed files
with
33 additions
and
32 deletions
Show diff stats
src/ProtocolCode.lua
src/actions/AdvAction.lua
| ... | ... | @@ -76,13 +76,17 @@ function _M.useItemRpc(agent, data) |
| 76 | 76 | end |
| 77 | 77 | |
| 78 | 78 | --使用营养技能 |
| 79 | -function _M.useSkillRpc(agent, data) | |
| 79 | +function _M.usePotionRpc(agent, data) | |
| 80 | 80 | local role = agent.role |
| 81 | 81 | local msg = MsgPack.unpack(data) |
| 82 | + local dishLevel = role.dinerData:getProperty("dishTree"):getv(msg.potionId, 0) | |
| 83 | + if dishLevel == 0 then | |
| 84 | + return | |
| 85 | + end | |
| 82 | 86 | local adv = role:getAdvData() |
| 83 | - local status = adv:useSkill(msg.skillId, msg.target) -- target {roomId = 1, blockId = 1} 选择的目标 | |
| 87 | + local status = adv:usePotion(msg.potionId, dishLevel, msg.target) -- target {roomId = 1, blockId = 1} 选择的目标 | |
| 84 | 88 | if not status then return end |
| 85 | - SendPacket(actionCodes.Adv_useSkillRpc, MsgPack.pack({events = adv:popBackEvents()})) | |
| 89 | + SendPacket(actionCodes.Adv_usePotionRpc, MsgPack.pack({events = adv:popBackEvents()})) | |
| 86 | 90 | return true |
| 87 | 91 | end |
| 88 | 92 | |
| ... | ... | @@ -93,7 +97,7 @@ function _M.specialSkillRpc(agent, data) |
| 93 | 97 | local adv = role:getAdvData() |
| 94 | 98 | local status = adv:useSpecialSkill(msg.skillId) |
| 95 | 99 | if not status then return end |
| 96 | - SendPacket(actionCodes.Adv_useSkillRpc, MsgPack.pack({events = {}})) | |
| 100 | + SendPacket(actionCodes.Adv_specialSkillRpc, MsgPack.pack({events = {}})) | |
| 97 | 101 | return true |
| 98 | 102 | end |
| 99 | 103 | ... | ... |
src/adv/Adv.lua
| ... | ... | @@ -929,7 +929,7 @@ function Adv:useItem(itemId, count, target) |
| 929 | 929 | end |
| 930 | 930 | --生效 |
| 931 | 931 | if itemData.type == 1 or itemData.type == 0 then --技能 |
| 932 | - self.battle.player:releaseSkill(itemData.effect, 1, target) | |
| 932 | + self.battle.player:releaseSkill(itemData.effect, target) | |
| 933 | 933 | elseif itemData.type == 2 then --掉落 |
| 934 | 934 | local item = csvdb["event_dropCsv"][itemData.effect]["range"]:randWeight(true) |
| 935 | 935 | self:backReward(self:award({[item[1]] = item[2]}, {})) |
| ... | ... | @@ -942,29 +942,24 @@ function Adv:useItem(itemId, count, target) |
| 942 | 942 | return true |
| 943 | 943 | end |
| 944 | 944 | |
| 945 | ---使用技能 -- TODO 改表了,估计要重写 | |
| 946 | -function Adv:useSkill(skillId, target) | |
| 947 | - local skillLevel = nil | |
| 948 | - for slot, heroId in pairs(self.advTeam.heros) do | |
| 949 | - if self.owner.heros[heroId] then | |
| 950 | - if csvdb["unitCsv"][self.owner.heros[heroId]:getSkinId()]["adv"] == skillId then | |
| 951 | - skillLevel = self.owner.heros[heroId]:getSkillLevel(4) | |
| 952 | - break | |
| 953 | - end | |
| 954 | - end | |
| 955 | - end | |
| 956 | - if not skillLevel then return end | |
| 957 | - local skillData = csvdb["adv_skillCsv"][skillId] | |
| 958 | - if self.advInfo.power < skillData.cost then return end | |
| 959 | - self.advInfo.power = self.advInfo.power - skillData.cost | |
| 960 | - if skillData.target:toArray(true, "=")[1] == 0 then | |
| 961 | - local enemy = self.battle:getEnemy(target.roomId, target.blockId) | |
| 962 | - if not enemy then return end | |
| 963 | - self.battle.player:releaseSkill(skillId, skillLevel, enemy) | |
| 945 | +--使用技能 | |
| 946 | +function Adv:usePotion(potionId, potionLevel, target) | |
| 947 | + -- cost | |
| 948 | + local potionData = csvdb["adv_potionCsv"][potionId][potionLevel] | |
| 949 | + -- if self.advInfo.power < skillData.cost then return end | |
| 950 | + -- self.advInfo.power = self.advInfo.power - skillData.cost | |
| 951 | + -- target | |
| 952 | + local enemy = self.battle:getEnemy(target.roomId, target.blockId) | |
| 953 | + if not enemy then return end | |
| 954 | + --生效 | |
| 955 | + if potionData.type == 1 or potionData.type == 0 then --技能 | |
| 956 | + self.battle.player:releaseSkill(potionData.effect, enemy) | |
| 957 | + elseif potionData.type == 2 then --掉落 | |
| 958 | + local item = csvdb["event_dropCsv"][potionData.effect]["range"]:randWeight(true) | |
| 959 | + self:backReward(self:award({[item[1]] = item[2]}, {})) | |
| 964 | 960 | else |
| 965 | - self.battle.player:releaseSkill(skillId, skillLevel) | |
| 961 | + return | |
| 966 | 962 | end |
| 967 | - | |
| 968 | 963 | self:afterRound() |
| 969 | 964 | self:saveDB() |
| 970 | 965 | return true | ... | ... |
src/adv/AdvPlayer.lua
| ... | ... | @@ -337,12 +337,15 @@ end |
| 337 | 337 | |
| 338 | 338 | function BaseObject:releaseSpecialSkill() |
| 339 | 339 | local skillData = table.remove(self.skillOrder, 1) |
| 340 | - self:releaseSkill(skillData.id, skillData.level, skillData.target) | |
| 340 | + local skillSet = csvdb["adv_skill_specialCsv"][skillData.id][skillData.level] | |
| 341 | + for _, skillId in ipairs(skillSet.skillId:toArray(true, "=")) do | |
| 342 | + self:releaseSkill(skillId, skillData.target) | |
| 343 | + end | |
| 341 | 344 | end |
| 342 | 345 | |
| 343 | -function BaseObject:releaseSkill(skillId, skillLevel, target) | |
| 346 | +function BaseObject:releaseSkill(skillId, target) | |
| 344 | 347 | if self:hadBuff(Buff.CANT_SKILL) then return end -- 针对 怪物 |
| 345 | - local skill = Skill.new(self, {id = skillId, level = skillLevel, target = target}) | |
| 348 | + local skill = Skill.new(self, {id = skillId, target = target}) | |
| 346 | 349 | --返回客户端 |
| 347 | 350 | for _, target in ipairs(skill:getTargets()) do |
| 348 | 351 | self.battle.adv:backSkill(self.id, skillId, target.id) | ... | ... |
src/adv/AdvSkill.lua
| ... | ... | @@ -3,10 +3,9 @@ local Skill = class("Skill") |
| 3 | 3 | function Skill:ctor(owner, data) |
| 4 | 4 | self.owner = owner |
| 5 | 5 | self.id = data.id |
| 6 | - self.level = data.level or 1 | |
| 7 | 6 | self.defaultTarget = data.target |
| 8 | 7 | |
| 9 | - self.skillData = csvdb["adv_skillCsv"][self.id][self.level] | |
| 8 | + self.skillData = csvdb["adv_skillCsv"][self.id] | |
| 10 | 9 | self.targets = self:initTargets() |
| 11 | 10 | end |
| 12 | 11 | ... | ... |