Commit d27ad5e0ce091b36e92ad8b84581a914de01252e

Authored by suhongyang
1 parent b67cfabd

使用营养技

src/ProtocolCode.lua
... ... @@ -30,7 +30,7 @@ actionCodes = {
30 30 Adv_roleFormatRpc = 152,
31 31 Adv_clickBlockRpc = 153,
32 32 Adv_useItemRpc = 154,
33   - Adv_useSkillRpc = 155,
  33 + Adv_usePotionRpc = 155,
34 34 Adv_exitAdvRpc = 156,
35 35 Adv_nextTurnRpc = 157,
36 36 Adv_specialSkillRpc = 158,
... ...
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(&quot;Skill&quot;)
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  
... ...