buff加属性
This commit is contained in:
parent
e88e9e9e98
commit
3666e425ff
@ -89,6 +89,98 @@ BattleConst.EFFECT_TYPE = {
|
|||||||
HOT = 102,
|
HOT = 102,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local BUFF_NAME = {
|
||||||
|
ATKP_COLOR_ADD = "atkp_color_add",
|
||||||
|
ATKP_RED_ADD = "atkp_red_add",
|
||||||
|
ATKP_YELLOW_ADD = "atkp_yellow_add",
|
||||||
|
ATKP_GREEN_ADD = "atkp_green_add",
|
||||||
|
ATKP_BLUE_ADD = "atkp_blue_add",
|
||||||
|
ATKP_PURPLE_ADD = "atkp_purple_add",
|
||||||
|
DEC_DMG_RED_ADD = "dec_dmg_red_add",
|
||||||
|
DEC_DMG_YELLOW_ADD = "dec_dmg_yellow_add",
|
||||||
|
DEC_DMG_GREEN_ADD = "dec_dmg_green_add",
|
||||||
|
DEC_DMG_BLUE_ADD = "dec_dmg_blue_add",
|
||||||
|
DEC_DMG_PURPLE_ADD = "dec_dmg_purple_add",
|
||||||
|
DEC_DMG_ALL_ADD = "dec_dmg_all_add",
|
||||||
|
WEAKNESS_RED_ADD = "weakness_red_add",
|
||||||
|
WEAKNESS_YELLOW_ADD = "weakness_yellow_add",
|
||||||
|
WEAKNESS_GREEN_ADD = "weakness_green_add",
|
||||||
|
WEAKNESS_BLUE_ADD = "weakness_blue_add",
|
||||||
|
WEAKNESS_PURPLE_ADD = "weakness_purple_add",
|
||||||
|
WEAKNESS_ALL_ADD = "weakness_all_add",
|
||||||
|
DMG_ADDITION_RED_ADD = "dmg_addition_red_add",
|
||||||
|
DMG_ADDITION_YELLOW_ADD = "dmg_addition_yellow_add",
|
||||||
|
DMG_ADDITION_GREEN_ADD = "dmg_addition_green_add",
|
||||||
|
DMG_ADDITION_BLUE_ADD = "dmg_addition_blue_add",
|
||||||
|
DMG_ADDITION_PURPLE_ADD = "dmg_addition_purple_add",
|
||||||
|
DMG_ADDITION_ALL_ADD = "dmg_addition_all_add",
|
||||||
|
ATKP_COLOR_ADD = "atkp_color_add",
|
||||||
|
ATKP_RED_ADD = "atkp_red_add",
|
||||||
|
ATKP_YELLOW_ADD = "atkp_yellow_add",
|
||||||
|
ATKP_GREEN_ADD = "atkp_green_add",
|
||||||
|
ATKP_BLUE_ADD = "atkp_blue_add",
|
||||||
|
ATKP_PURPLE_ADD = "atkp_purple_add",
|
||||||
|
HPP_ADD = "hpp_add",
|
||||||
|
CRIT_ADD = "crit_add",
|
||||||
|
CRIT_TIME_ADD = "crit_time_add",
|
||||||
|
}
|
||||||
|
BattleConst.BUFF_NAME = BUFF_NAME
|
||||||
|
|
||||||
|
local ATTR_NAME = {
|
||||||
|
ATK = "atk",
|
||||||
|
ATK_RED = "atk_red",
|
||||||
|
ATK_YELLOW = "atk_yellow",
|
||||||
|
ATK_GREEN = "atk_green",
|
||||||
|
ATK_BLUE = "atk_blue",
|
||||||
|
ATK_PURPLE = "atk_purple",
|
||||||
|
DEC_DMG_RED = "dec_dmg_red",
|
||||||
|
DEC_DMG_YELLOW = "dec_dmg_yellow",
|
||||||
|
DEC_DMG_GREEN = "dec_dmg_green",
|
||||||
|
DEC_DMG_BLUE = "dec_dmg_blue",
|
||||||
|
DEC_DMG_PURPLE = "dec_dmg_purple",
|
||||||
|
DEC_DMG_ALL = "dec_dmg_all",
|
||||||
|
WEAKNESS_RED = "weakness_red",
|
||||||
|
WEAKNESS_YELLOW = "weakness_yellow",
|
||||||
|
WEAKNESS_GREEN = "weakness_green",
|
||||||
|
WEAKNESS_BLUE = "weakness_blue",
|
||||||
|
WEAKNESS_PURPLE = "weakness_purple",
|
||||||
|
WEAKNESS_ALL = "weakness_all",
|
||||||
|
DMG_ADDITION_RED = "dmg_addition_red",
|
||||||
|
DMG_ADDITION_YELLOW = "dmg_addition_yellow",
|
||||||
|
DMG_ADDITION_GREEN = "dmg_addition_green",
|
||||||
|
DMG_ADDITION_BLUE = "dmg_addition_blue",
|
||||||
|
DMG_ADDITION_PURPLE = "dmg_addition_purple",
|
||||||
|
DMG_ADDITION_ALL = "dmg_addition_all"
|
||||||
|
}
|
||||||
|
BattleConst.ATTR_NAME = ATTR_NAME
|
||||||
|
|
||||||
|
-- buff->{属性名,是否按百分比乘法加成}
|
||||||
|
BattleConst.BUFF_NAME_TO_ATTR = {
|
||||||
|
[BUFF_NAME.ATKP_RED_ADD] = {ATTR_NAME.ATK_RED, true},
|
||||||
|
[BUFF_NAME.ATKP_YELLOW_ADD] = {ATTR_NAME.ATK_YELLOW, true},
|
||||||
|
[BUFF_NAME.ATKP_GREEN_ADD] = {ATTR_NAME.ATK_GREEN, true},
|
||||||
|
[BUFF_NAME.ATKP_BLUE_ADD] = {ATTR_NAME.ATK_BLUE, true},
|
||||||
|
[BUFF_NAME.ATKP_PURPLE_ADD] = {ATTR_NAME.ATK_PURPLE, true},
|
||||||
|
[BUFF_NAME.DEC_DMG_RED_ADD] = {ATTR_NAME.DEC_DMG_RED, false},
|
||||||
|
[BUFF_NAME.DEC_DMG_YELLOW_ADD] = {ATTR_NAME.DEC_DMG_YELLOW, false},
|
||||||
|
[BUFF_NAME.DEC_DMG_GREEN_ADD] = {ATTR_NAME.DEC_DMG_GREEN, false},
|
||||||
|
[BUFF_NAME.DEC_DMG_BLUE_ADD] = {ATTR_NAME.DEC_DMG_BLUE, false},
|
||||||
|
[BUFF_NAME.DEC_DMG_PURPLE_ADD] = {ATTR_NAME.DEC_DMG_PURPLE, false},
|
||||||
|
[BUFF_NAME.DEC_DMG_ALL_ADD] = {ATTR_NAME.DEC_DMG_ALL, false},
|
||||||
|
[BUFF_NAME.WEAKNESS_RED_ADD] = {ATTR_NAME.WEAKNESS_RED, false},
|
||||||
|
[BUFF_NAME.WEAKNESS_YELLOW_ADD] = {ATTR_NAME.WEAKNESS_YELLOW, false},
|
||||||
|
[BUFF_NAME.WEAKNESS_GREEN_ADD] = {ATTR_NAME.WEAKNESS_GREEN, false},
|
||||||
|
[BUFF_NAME.WEAKNESS_BLUE_ADD] = {ATTR_NAME.WEAKNESS_BLUE, false},
|
||||||
|
[BUFF_NAME.WEAKNESS_PURPLE_ADD] = {ATTR_NAME.WEAKNESS_PURPLE, false},
|
||||||
|
[BUFF_NAME.WEAKNESS_ALL_ADD] = {ATTR_NAME.WEAKNESS_ALL, false},
|
||||||
|
[BUFF_NAME.DMG_ADDITION_RED_ADD] = {ATTR_NAME.DMG_ADDITION_RED, false},
|
||||||
|
[BUFF_NAME.DMG_ADDITION_YELLOW_ADD] = {ATTR_NAME.DMG_ADDITION_YELLOW, false},
|
||||||
|
[BUFF_NAME.DMG_ADDITION_GREEN_ADD] = {ATTR_NAME.DMG_ADDITION_GREEN, false},
|
||||||
|
[BUFF_NAME.DMG_ADDITION_BLUE_ADD] = {ATTR_NAME.DMG_ADDITION_BLUE, false},
|
||||||
|
[BUFF_NAME.DMG_ADDITION_PURPLE_ADD] = {ATTR_NAME.DMG_ADDITION_PURPLE, false},
|
||||||
|
[BUFF_NAME.DMG_ADDITION_ALL_ADD] = {ATTR_NAME.DMG_ADDITION_ALL, false},
|
||||||
|
}
|
||||||
|
|
||||||
---- 格子类型
|
---- 格子类型
|
||||||
BattleConst.GRID_TYPE = {
|
BattleConst.GRID_TYPE = {
|
||||||
EMPTY = 0,
|
EMPTY = 0,
|
||||||
|
|||||||
@ -9,6 +9,7 @@ local EFFECT_TYPE = BattleConst.EFFECT_TYPE
|
|||||||
local BUFF_NAME = BattleConst.BUFF_NAME
|
local BUFF_NAME = BattleConst.BUFF_NAME
|
||||||
local ATTR_NAME = BattleConst.ATTR_NAME
|
local ATTR_NAME = BattleConst.ATTR_NAME
|
||||||
local DEFAULT_FACTOR = BattleConst.DEFAULT_FACTOR
|
local DEFAULT_FACTOR = BattleConst.DEFAULT_FACTOR
|
||||||
|
local BUFF_NAME_TO_ATTR = BattleConst.BUFF_NAME_TO_ATTR
|
||||||
|
|
||||||
local function _doDotWork(unitComp, buffEffect, buff)
|
local function _doDotWork(unitComp, buffEffect, buff)
|
||||||
local damage, hurtStatus = BattleFormula:getDamageOrCureResult(buffEffect.sender, buff, unitComp)
|
local damage, hurtStatus = BattleFormula:getDamageOrCureResult(buffEffect.sender, buff, unitComp)
|
||||||
@ -49,6 +50,14 @@ function BattleBuffHandle.removeBuff(unitComp, buffEffect)
|
|||||||
end
|
end
|
||||||
|
|
||||||
BattleBuffHandle.addAttribute = {
|
BattleBuffHandle.addAttribute = {
|
||||||
|
[BUFF_NAME.ATKP_COLOR_ADD] = function(target, num)
|
||||||
|
target.unitEntity:addAttr(ATTR_NAME.ATK, num, true)
|
||||||
|
target.unitEntity:addAttr(ATTR_NAME.ATK_RED, num, true)
|
||||||
|
target.unitEntity:addAttr(ATTR_NAME.ATK_YELLOW, num, true)
|
||||||
|
target.unitEntity:addAttr(ATTR_NAME.ATK_GREEN, num, true)
|
||||||
|
target.unitEntity:addAttr(ATTR_NAME.ATK_BLUE, num, true)
|
||||||
|
target.unitEntity:addAttr(ATTR_NAME.ATK_PURPLE, num, true)
|
||||||
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
local function _takeEffectDirectHurt(unitComp, buff, target)
|
local function _takeEffectDirectHurt(unitComp, buff, target)
|
||||||
@ -81,10 +90,14 @@ end
|
|||||||
|
|
||||||
local function _takeEffectAttr(unitComp, buff, target)
|
local function _takeEffectAttr(unitComp, buff, target)
|
||||||
local buffName = buff:getName()
|
local buffName = buff:getName()
|
||||||
local func = BattleBuffHandle.addAttribute[buffName]
|
local attr = BUFF_NAME_TO_ATTR[buffName]
|
||||||
if func then
|
if attr then
|
||||||
func(target, buff:getEffectNum())
|
return target.unitEntity:addAttr(attr[1], buff:getEffectNum(), attr[2])
|
||||||
return true
|
else
|
||||||
|
local func = BattleBuffHandle.addAttribute[buffName]
|
||||||
|
if func then
|
||||||
|
return func(target, buff:getEffectNum())
|
||||||
|
end
|
||||||
end
|
end
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
@ -112,9 +125,18 @@ BattleBuffHandle.takeBuffEffect = {
|
|||||||
|
|
||||||
-- 还原改变的属性
|
-- 还原改变的属性
|
||||||
local function _removeEffectAttr(buffSender, target, buff, buffEffect)
|
local function _removeEffectAttr(buffSender, target, buff, buffEffect)
|
||||||
local func = BattleBuffHandle.addAttribute[buff:getName()]
|
if buffEffect == nil then
|
||||||
if func then
|
return
|
||||||
func(target, -buff:getEffectNum())
|
end
|
||||||
|
local buffName = buff:getName()
|
||||||
|
local attr = BUFF_NAME_TO_ATTR[buffName]
|
||||||
|
if attr then
|
||||||
|
target.unitEntity:addAttr(attr[1], -buffEffect.effectResult, false)
|
||||||
|
else
|
||||||
|
local func = BattleBuffHandle.addAttribute[buffName]
|
||||||
|
if func then
|
||||||
|
return func(target, -buff:getEffectNum())
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -8,6 +8,7 @@ local MATCH_ATTACK_NAME = GConst.MATCH_ATTACK_NAME
|
|||||||
local MATCH_DMG_ADDITION_NAME = BattleConst.MATCH_DMG_ADDITION_NAME
|
local MATCH_DMG_ADDITION_NAME = BattleConst.MATCH_DMG_ADDITION_NAME
|
||||||
local MATCH_DMG_DEC_NAME = BattleConst.MATCH_DMG_DEC_NAME
|
local MATCH_DMG_DEC_NAME = BattleConst.MATCH_DMG_DEC_NAME
|
||||||
local MATCH_WEAKNESS_NAME = BattleConst.MATCH_WEAKNESS_NAME
|
local MATCH_WEAKNESS_NAME = BattleConst.MATCH_WEAKNESS_NAME
|
||||||
|
local DEFAULT_FACTOR = BattleConst.DEFAULT_FACTOR
|
||||||
|
|
||||||
function BattleTeamEntity:ctor()
|
function BattleTeamEntity:ctor()
|
||||||
self.members = {}
|
self.members = {}
|
||||||
@ -66,6 +67,39 @@ function BattleTeamEntity:addBaseAttr(unitAttr)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function BattleTeamEntity:addAttr(name, num, isPercent)
|
||||||
|
local addNum = 0
|
||||||
|
if isPercent then
|
||||||
|
if self.attr[name] then
|
||||||
|
-- 百分比加减属性的时候如果是减少属性,则先取正数做计算,在减去此结果, 否则在做整除运算的时候,正数和负数整除后的绝对值会不一致
|
||||||
|
-- 例如150 // 100 = 1, -150 // 100 = -2, 导致添加和移除的时候计算的属性值不一样
|
||||||
|
if num < 0 then
|
||||||
|
if self.baseAttr[name] then
|
||||||
|
addNum = self.baseAttr[name] * -num // DEFAULT_FACTOR
|
||||||
|
self.attr[name] = self.attr[name] - addNum
|
||||||
|
else
|
||||||
|
addNum = self.attr[name] * -num // DEFAULT_FACTOR
|
||||||
|
self.attr[name] = self.attr[name] - addNum
|
||||||
|
end
|
||||||
|
addNum = -addNum
|
||||||
|
else
|
||||||
|
if self.baseAttr[name] then
|
||||||
|
addNum = self.baseAttr[name] * num // DEFAULT_FACTOR
|
||||||
|
self.attr[name] = self.attr[name] + addNum
|
||||||
|
else
|
||||||
|
addNum = self.attr[name] * num // DEFAULT_FACTOR
|
||||||
|
self.attr[name] = self.attr[name] + addNum
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
addNum = num
|
||||||
|
local currNum = self.attr[name] or 0
|
||||||
|
self.attr[name] = currNum + num
|
||||||
|
end
|
||||||
|
return addNum
|
||||||
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getAllMembers()
|
function BattleTeamEntity:getAllMembers()
|
||||||
return self.members
|
return self.members
|
||||||
end
|
end
|
||||||
|
|||||||
@ -25,6 +25,10 @@ function BattleUnitEntity:initSkill()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function BattleUnitEntity:addAttr(name, num, isPercent)
|
||||||
|
return self.team:addAttr(name, num, isPercent)
|
||||||
|
end
|
||||||
|
|
||||||
function BattleUnitEntity:getModelId()
|
function BattleUnitEntity:getModelId()
|
||||||
return self.unitData.modelId
|
return self.unitData.modelId
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user