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