Commit d27ad5e0ce091b36e92ad8b84581a914de01252e

Authored by suhongyang
1 parent b67cfabd

使用营养技

src/ProtocolCode.lua
@@ -30,7 +30,7 @@ actionCodes = { @@ -30,7 +30,7 @@ actionCodes = {
30 Adv_roleFormatRpc = 152, 30 Adv_roleFormatRpc = 152,
31 Adv_clickBlockRpc = 153, 31 Adv_clickBlockRpc = 153,
32 Adv_useItemRpc = 154, 32 Adv_useItemRpc = 154,
33 - Adv_useSkillRpc = 155, 33 + Adv_usePotionRpc = 155,
34 Adv_exitAdvRpc = 156, 34 Adv_exitAdvRpc = 156,
35 Adv_nextTurnRpc = 157, 35 Adv_nextTurnRpc = 157,
36 Adv_specialSkillRpc = 158, 36 Adv_specialSkillRpc = 158,
src/actions/AdvAction.lua
@@ -76,13 +76,17 @@ function _M.useItemRpc(agent, data) @@ -76,13 +76,17 @@ function _M.useItemRpc(agent, data)
76 end 76 end
77 77
78 --使用营养技能 78 --使用营养技能
79 -function _M.useSkillRpc(agent, data) 79 +function _M.usePotionRpc(agent, data)
80 local role = agent.role 80 local role = agent.role
81 local msg = MsgPack.unpack(data) 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 local adv = role:getAdvData() 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 if not status then return end 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 return true 90 return true
87 end 91 end
88 92
@@ -93,7 +97,7 @@ function _M.specialSkillRpc(agent, data) @@ -93,7 +97,7 @@ function _M.specialSkillRpc(agent, data)
93 local adv = role:getAdvData() 97 local adv = role:getAdvData()
94 local status = adv:useSpecialSkill(msg.skillId) 98 local status = adv:useSpecialSkill(msg.skillId)
95 if not status then return end 99 if not status then return end
96 - SendPacket(actionCodes.Adv_useSkillRpc, MsgPack.pack({events = {}})) 100 + SendPacket(actionCodes.Adv_specialSkillRpc, MsgPack.pack({events = {}}))
97 return true 101 return true
98 end 102 end
99 103
@@ -929,7 +929,7 @@ function Adv:useItem(itemId, count, target) @@ -929,7 +929,7 @@ function Adv:useItem(itemId, count, target)
929 end 929 end
930 --生效 930 --生效
931 if itemData.type == 1 or itemData.type == 0 then --技能 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 elseif itemData.type == 2 then --掉落 933 elseif itemData.type == 2 then --掉落
934 local item = csvdb["event_dropCsv"][itemData.effect]["range"]:randWeight(true) 934 local item = csvdb["event_dropCsv"][itemData.effect]["range"]:randWeight(true)
935 self:backReward(self:award({[item[1]] = item[2]}, {})) 935 self:backReward(self:award({[item[1]] = item[2]}, {}))
@@ -942,29 +942,24 @@ function Adv:useItem(itemId, count, target) @@ -942,29 +942,24 @@ function Adv:useItem(itemId, count, target)
942 return true 942 return true
943 end 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 else 960 else
965 - self.battle.player:releaseSkill(skillId, skillLevel) 961 + return
966 end 962 end
967 -  
968 self:afterRound() 963 self:afterRound()
969 self:saveDB() 964 self:saveDB()
970 return true 965 return true
src/adv/AdvPlayer.lua
@@ -337,12 +337,15 @@ end @@ -337,12 +337,15 @@ end
337 337
338 function BaseObject:releaseSpecialSkill() 338 function BaseObject:releaseSpecialSkill()
339 local skillData = table.remove(self.skillOrder, 1) 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 end 344 end
342 345
343 -function BaseObject:releaseSkill(skillId, skillLevel, target) 346 +function BaseObject:releaseSkill(skillId, target)
344 if self:hadBuff(Buff.CANT_SKILL) then return end -- 针对 怪物 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 for _, target in ipairs(skill:getTargets()) do 350 for _, target in ipairs(skill:getTargets()) do
348 self.battle.adv:backSkill(self.id, skillId, target.id) 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,10 +3,9 @@ local Skill = class(&quot;Skill&quot;)
3 function Skill:ctor(owner, data) 3 function Skill:ctor(owner, data)
4 self.owner = owner 4 self.owner = owner
5 self.id = data.id 5 self.id = data.id
6 - self.level = data.level or 1  
7 self.defaultTarget = data.target 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 self.targets = self:initTargets() 9 self.targets = self:initTargets()
11 end 10 end
12 11