Commit d27ad5e0ce091b36e92ad8b84581a914de01252e
1 parent
b67cfabd
使用营养技
Showing
5 changed files
with
33 additions
and
32 deletions
Show diff stats
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 |
src/adv/Adv.lua
@@ -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("Skill") | @@ -3,10 +3,9 @@ local Skill = class("Skill") | ||
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 |