From 1b0d767fc13361574c6157262d709ece91686180 Mon Sep 17 00:00:00 2001 From: suhongyang <1609423485@qq.com> Date: Fri, 28 Jun 2019 14:25:18 +0800 Subject: [PATCH] 一個被動支持多種effect --- src/adv/AdvPassive.lua | 49 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/src/adv/AdvPassive.lua b/src/adv/AdvPassive.lua index 60dda2a..20ef130 100644 --- a/src/adv/AdvPassive.lua +++ b/src/adv/AdvPassive.lua @@ -122,6 +122,9 @@ function Passive:ctor(owner, data) self.isDel = false self.round = data.round or 0 --触发剩余回合数 self.count = data.count or 0 --触发剩余次数 + + self.effects = self.passiveData.effect:toTableArray(true) + if PassiveCondFactory[self.passiveData.condition] then PassiveCondFactory[self.passiveData.condition](self) end @@ -134,9 +137,28 @@ function Passive:getCondType() return self.passiveData.condition, self.passiveData.value end -function Passive:effect() - if math.randomInt(1, 100) <= self.passiveData.chance and self["effect" .. self.passiveData.effect] then - self["effect" .. self.passiveData.effect](self) +function Passive:canEffect(effType, effValue) + if self.owner.lock and effType ~= 3 then -- 锁定的只能触发翻开自己格子的固有技 + return + end + return true +end + +function Passive:effect(trigger) + if math.randomInt(1, 100) > self.passiveData.chance then + return + end + local effNum = 0 + for _, effect in pairs(self.effects) do + local effType = effect[1] + local effValue = effect[2] + if self:canEffect(effType, effValue) then + self["effect" .. effType](self, effValue, trigger) + effNum = effNum + 1 + end + end + if effNum < 1 then + return end --次数为 -1 一局只能触发一次,触发过后删掉就可以 if self.count == -1 then @@ -170,7 +192,6 @@ function Passive:trigger(condType, params) --触发检查 params = params or {} if self.isDel or self.owner.isDead then return end if self:getCondType() ~= condType then return end - if self.owner.lock and self.passiveData.effect ~= 3 then return end -- 锁定的只能触发翻开自己格子的固有技 if self:isActive() then return end if self._trigger then if not self:_trigger(params) then return end --检查 @@ -196,17 +217,17 @@ function Passive:getDB() end --默认=0=使用技能, -function Passive:effect0() - self.owner:releaseSkill(self.passiveData.effectValue) +function Passive:effect0(value) + self.owner:releaseSkill(value) end --1=自身获得buff -function Passive:effect1() - self.owner:addBuff(self.passiveData.effectValue) +function Passive:effect1(value) + self.owner:addBuff(value) end --2=触发目标获得buff -function Passive:effect2(trigger) +function Passive:effect2(value, trigger) if trigger then - trigger:addBuff(self.passiveData.effectValue) + trigger:addBuff(value) end end --3=翻开自己所在格子 @@ -219,14 +240,14 @@ function Passive:effect4() self.owner.battle.adv:enemyDead(self.owner.roomId,self.owner.blockId, true) end --5=给随机一个敌方增加一个buff -function Passive:effect5() +function Passive:effect5(value) local monsters = self.owner.battle.player:getTeam(2) local randomId = math.random( 1, #monsters ) - monsters[randomId]:addBuff(self.passiveData.effectValue) + monsters[randomId]:addBuff(value) end --6=给自己加一個被動技能 -function Passive:effect6() - self.owner:addPassive({id = self.passiveData.effectValue}) +function Passive:effect6(value) + self.owner:addPassive({id = value}) end return Passive \ No newline at end of file -- libgit2 0.21.2