Merge branch 'battle' into dev_20230725

This commit is contained in:
xiekaidong 2023-07-13 18:03:03 +08:00
commit 29bcf831a3
7 changed files with 244 additions and 37 deletions

View File

@ -468,6 +468,83 @@ GConst.MATCH_ATTACK_NAME = {
[5] = "atk_purple", [5] = "atk_purple",
} }
GConst.MATCH_ATTACK_ADD_NAME = {
[1] = "attr_atkp_red",
[2] = "attr_atkp_yellow",
[3] = "attr_atkp_green",
[4] = "attr_atkp_blue",
[5] = "attr_atkp_purple",
}
GConst.MATCH_HP_ADD_NAME = {
[1] = "attr_hpp_red",
[2] = "attr_hpp_yellow",
[3] = "attr_hpp_green",
[4] = "attr_hpp_blue",
[5] = "attr_hpp_purple",
}
GConst.MATCH_CRIT_NAME = {
[0] = "crit",
[1] = "attr_crit_red",
[2] = "attr_crit_yellow",
[3] = "attr_crit_green",
[4] = "attr_crit_blue",
[5] = "attr_crit_purple",
}
GConst.MATCH_CRIT_TIME_NAME = {
[0] = "crit_time",
[1] = "attr_crit_time_red",
[2] = "attr_crit_time_yellow",
[3] = "attr_crit_time_green",
[4] = "attr_crit_time_blue",
[5] = "attr_crit_time_purple",
}
GConst.MATCH_CURED_NAME = {
[0] = "cure_addition",
[1] = "attr_cured_red",
[2] = "attr_cured_yellow",
[3] = "attr_cured_green",
[4] = "attr_cured_blue",
[5] = "attr_cured_purple",
}
GConst.MATCH_NORMAL_HURT_NAME = {
[1] = "attr_normal_hurt_red",
[2] = "attr_normal_hurt_yellow",
[3] = "attr_normal_hurt_green",
[4] = "attr_normal_hurt_blue",
[5] = "attr_normal_hurt_purple",
}
GConst.MATCH_SKILL_HURT_NAME = {
[1] = "attr_skill_hurt_red",
[2] = "attr_skill_hurt_yellow",
[3] = "attr_skill_hurt_green",
[4] = "attr_skill_hurt_blue",
[5] = "attr_skill_hurt_purple",
}
GConst.MATCH_NORMAL_HURTP_NAME = {
[1] = "attr_normal_hurtp_red",
[2] = "attr_normal_hurtp_yellow",
[3] = "attr_normal_hurtp_green",
[4] = "attr_normal_hurtp_blue",
[5] = "attr_normal_hurtp_purple",
}
GConst.MATCH_SKILL_HURTP_NAME = {
[0] = "skill_hurtp",
[1] = "attr_skill_hurtp_red",
[2] = "attr_skill_hurtp_yellow",
[3] = "attr_skill_hurtp_green",
[4] = "attr_skill_hurtp_blue",
[5] = "attr_skill_hurtp_purple",
}
GConst.GAMEOBJECT_LAYER = { GConst.GAMEOBJECT_LAYER = {
DEFAULT = CS.BF.Utils.NameToLayer("Default"), DEFAULT = CS.BF.Utils.NameToLayer("Default"),
UI = CS.BF.Utils.NameToLayer("UI"), UI = CS.BF.Utils.NameToLayer("UI"),

View File

@ -384,12 +384,59 @@ local ATTR_NAME = {
THORNS = "thorns", THORNS = "thorns",
FIRST_HAND = "first_hand", FIRST_HAND = "first_hand",
COUNTER_ATTACK = "counterattack", COUNTER_ATTACK = "counterattack",
SKILL_HURT = "skill_hurt", SKILL_HURTP = "skill_hurtp",
DEATH_SUMMON = "death_summon", DEATH_SUMMON = "death_summon",
BLEED = "bleed", BLEED = "bleed",
INVALID_CONTROL = "invalid_control", INVALID_CONTROL = "invalid_control",
END_DMG_ADDITION_ALL = "end_dmg_addition_all", END_DMG_ADDITION_ALL = "end_dmg_addition_all",
END_DMG_DEC_ALL = "end_dmg_dec_all", END_DMG_DEC_ALL = "end_dmg_dec_all",
ATTR_CRIT_RED = "attr_crit_red",
ATTR_CRIT_YELLOW = "attr_crit_yellow",
ATTR_CRIT_GREEN = "attr_crit_green",
ATTR_CRIT_BLUE = "attr_crit_blue",
ATTR_CRIT_PURPLE = "attr_crit_purple",
ATTR_CRIT_TIME_RED = "attr_crit_time_red",
ATTR_CRIT_TIME_YELLOW = "attr_crit_time_yellow",
ATTR_CRIT_TIME_GREEN = "attr_crit_time_green",
ATTR_CRIT_TIME_BLUE = "attr_crit_time_blue",
ATTR_CRIT_TIME_PURPLE = "attr_crit_time_purple",
ATTR_CURED_RED = "attr_cured_red",
ATTR_CURED_YELLOW = "attr_cured_yellow",
ATTR_CURED_GREEN = "attr_cured_green",
ATTR_CURED_BLUE = "attr_cured_blue",
ATTR_CURED_PURPLE = "attr_cured_purple",
ATTR_ATKP_RED = "attr_atkp_red",
ATTR_ATKP_YELLOW = "attr_atkp_yellow",
ATTR_ATKP_GREEN = "attr_atkp_green",
ATTR_ATKP_BLUE = "attr_atkp_blue",
ATTR_ATKP_PURPLE = "attr_atkp_purple",
ATTR_HPP_RED = "attr_hpp_red",
ATTR_HPP_YELLOW = "attr_hpp_yellow",
ATTR_HPP_GREEN = "attr_hpp_green",
ATTR_HPP_BLUE = "attr_hpp_blue",
ATTR_HPP_PURPLE = "attr_hpp_purple",
ATTR_NORMAL_HURT_RED = "attr_normal_hurt_red",
ATTR_NORMAL_HURT_YELLOW = "attr_normal_hurt_yellow",
ATTR_NORMAL_HURT_GREEN = "attr_normal_hurt_green",
ATTR_NORMAL_HURT_BLUE = "attr_normal_hurt_blue",
ATTR_NORMAL_HURT_PURPLE = "attr_normal_hurt_purple",
ATTR_SKILL_HURT_RED = "attr_skill_hurt_red",
ATTR_SKILL_HURT_YELLOW = "attr_skill_hurt_yellow",
ATTR_SKILL_HURT_GREEN = "attr_skill_hurt_green",
ATTR_SKILL_HURT_BLUE = "attr_skill_hurt_blue",
ATTR_SKILL_HURT_PURPLE = "attr_skill_hurt_purple",
ATTR_NORMAL_HURTP_RED = "attr_normal_hurtp_red",
ATTR_NORMAL_HURTP_YELLOW = "attr_normal_hurtp_yellow",
ATTR_NORMAL_HURTP_GREEN = "attr_normal_hurtp_green",
ATTR_NORMAL_HURTP_BLUE = "attr_normal_hurtp_blue",
ATTR_NORMAL_HURTP_PURPLE = "attr_normal_hurtp_purple",
ATTR_SKILL_HURTP_RED = "attr_skill_hurtp_red",
ATTR_SKILL_HURTP_YELLOW = "attr_skill_hurtp_yellow",
ATTR_SKILL_HURTP_GREEN = "attr_skill_hurtp_green",
ATTR_SKILL_HURTP_BLUE = "attr_skill_hurtp_blue",
ATTR_SKILL_HURTP_PURPLE = "attr_skill_hurtp_purple",
} }
BattleConst.ATTR_NAME = ATTR_NAME BattleConst.ATTR_NAME = ATTR_NAME
@ -438,7 +485,7 @@ BattleConst.BUFF_NAME_TO_ATTR = {
[BUFF_NAME.THORNS] = {ATTR_NAME.THORNS, false}, [BUFF_NAME.THORNS] = {ATTR_NAME.THORNS, false},
[BUFF_NAME.FIRST_HAND] = {ATTR_NAME.FIRST_HAND, false}, [BUFF_NAME.FIRST_HAND] = {ATTR_NAME.FIRST_HAND, false},
[BUFF_NAME.COUNTER_ATTACK] = {ATTR_NAME.COUNTER_ATTACK, false}, [BUFF_NAME.COUNTER_ATTACK] = {ATTR_NAME.COUNTER_ATTACK, false},
[BUFF_NAME.SKILL_HURT_ADD] = {ATTR_NAME.SKILL_HURT, false}, [BUFF_NAME.SKILL_HURT_ADD] = {ATTR_NAME.SKILL_HURTP, false},
[BUFF_NAME.END_DMG_ADDITION_ALL_ADD] = {ATTR_NAME.END_DMG_ADDITION_ALL, false}, [BUFF_NAME.END_DMG_ADDITION_ALL_ADD] = {ATTR_NAME.END_DMG_ADDITION_ALL, false},
[BUFF_NAME.END_DMG_DEC_ALL_ADD] = {ATTR_NAME.END_DMG_DEC_ALL, false}, [BUFF_NAME.END_DMG_DEC_ALL_ADD] = {ATTR_NAME.END_DMG_DEC_ALL, false},
} }

View File

@ -15,16 +15,31 @@ function BattleFormula:getDamageOrCureResult(unitComp, buff, targetUnitComp)
end end
BattleFormula.calculateFormula = { BattleFormula.calculateFormula = {
-- (攻击)*技能倍率*(1+(攻击者元素伤害增加+所有伤害增加)(攻击者)- (攻击者元素伤害降低+所有伤害降低) +(受到元素伤害增加+受到所有伤害增加(受击)-受到元素伤害降低-受到所有伤害降低(受击) + 主动技能增伤)*暴击伤害*(1-最终造成伤害降低%+最终造成伤害增加%) -- ((攻击)*技能倍率*(1+(攻击者元素伤害增加+所有伤害增加)(攻击者)- (攻击者元素伤害降低+所有伤害降低) +(受到元素伤害增加+受到所有伤害增加(受击)-受到元素伤害降低-受到所有伤害降低(受击) + 主动技能增伤) + 固定值) *暴击伤害*(1-最终造成伤害降低%+最终造成伤害增加%)
[1] = function(unitComp, buff, targetUnit) [1] = function(unitComp, buff, targetUnit)
local skillHurtAdd = 0 local skillFixedAdd = 0
local skillPAdd = 0
local hostSkill = buff:getHostSkill() local hostSkill = buff:getHostSkill()
if hostSkill and hostSkill:getIsActiveType() and unitComp.unitEntity:getSkillHurt() > 0 then -- 是主动技能携带的buff且拥有技能伤害加成 if hostSkill then -- 技能伤害加成
skillHurtAdd = unitComp.unitEntity:getSkillHurt() if hostSkill:getIsActiveType() then -- 主动技能
skillFixedAdd = unitComp.unitEntity:getSkillHurtFixed()
skillPAdd = unitComp.unitEntity:getSkillHurtP()
elseif hostSkill:getIsNormalType() then -- 普攻
skillFixedAdd = unitComp.unitEntity:getNormalSkillHurtFixed()
skillPAdd = unitComp.unitEntity:getNormalSkillHurtP()
end end
local matchType = unitComp.unitEntity:getMatchType() end
local result = unitComp.unitEntity:getAtk() * buff:getEffectNum() // DEFAULT_FACTOR *
(DEFAULT_FACTOR + unitComp.unitEntity:getDmgAddition() - unitComp.unitEntity:getDmgDec() + targetUnit.unitEntity:getWeakness(matchType) - targetUnit.unitEntity:getDecDmg(matchType) + skillHurtAdd) // DEFAULT_FACTOR local result = unitComp.unitEntity:getAtk() * buff:getEffectNum() -- 基础值(攻击 * 技能倍率)
result = result * (DEFAULT_FACTOR
+ unitComp.unitEntity:getDmgAddition() -- (攻击者元素伤害增加 + 所有伤害增加)
- unitComp.unitEntity:getDmgDec() -- (攻击者元素伤害降低 + 所有伤害降低)
+ targetUnit.unitEntity:getWeakness() -- (受击者受到元素伤害增加 + 受到所有伤害增加)
- targetUnit.unitEntity:getDecDmg() -- (受击者受到元素伤害降低 + 受到所有伤害降低)
+ skillPAdd) // DEFAULT_FACTOR -- 技能增伤百分比
result = result + skillFixedAdd -- 固定值
-- 暴击
local hurtState = 0 local hurtState = 0
local crit = unitComp.unitEntity:getCrit() local crit = unitComp.unitEntity:getCrit()
if crit > 0 then if crit > 0 then
@ -49,9 +64,8 @@ BattleFormula.calculateFormula = {
end, end,
-- 释放者攻击*技能系数*(1+(攻击者元素伤害增加+所有伤害增加-攻击者元素伤害降低-所有伤害降低+受到元素伤害增加+受到所有伤害增加(受击)-受到元素伤害降低-受到所有伤害降低(受击)) -- 释放者攻击*技能系数*(1+(攻击者元素伤害增加+所有伤害增加-攻击者元素伤害降低-所有伤害降低+受到元素伤害增加+受到所有伤害增加(受击)-受到元素伤害降低-受到所有伤害降低(受击))
[4] = function(unitComp, buff, targetUnit) [4] = function(unitComp, buff, targetUnit)
local matchType = unitComp.unitEntity:getMatchType()
local result = unitComp.unitEntity:getAtk() * buff:getEffectNum() // DEFAULT_FACTOR * local result = unitComp.unitEntity:getAtk() * buff:getEffectNum() // DEFAULT_FACTOR *
(DEFAULT_FACTOR + unitComp.unitEntity:getDmgAddition() - unitComp.unitEntity:getDmgDec() + targetUnit.unitEntity:getWeakness(matchType) - targetUnit.unitEntity:getDecDmg(matchType)) // DEFAULT_FACTOR (DEFAULT_FACTOR + unitComp.unitEntity:getDmgAddition() - unitComp.unitEntity:getDmgDec() + targetUnit.unitEntity:getWeakness() - targetUnit.unitEntity:getDecDmg()) // DEFAULT_FACTOR
return result, 0 return result, 0
end, end,
} }

View File

@ -671,7 +671,7 @@ function BattleBaseData:initHeroData(formation)
for matchType, heroEntity in pairs(formation) do for matchType, heroEntity in pairs(formation) do
heroEntity:getAllAttr() heroEntity:getAllAttr()
local skillId = heroEntity:getBaseSkill() local skillId = heroEntity:getBaseSkill()
local hp = heroEntity:getAttrValue(ATTR_NAME.HP) // DEFAULT_FACTOR local hp = heroEntity:getHp() // DEFAULT_FACTOR
local unitData = { local unitData = {
id = heroEntity:getCfgId(), id = heroEntity:getCfgId(),
modelId = heroEntity:getModelId(), modelId = heroEntity:getModelId(),
@ -682,14 +682,49 @@ function BattleBaseData:initHeroData(formation)
attr = { attr = {
hp = hp, hp = hp,
max_hp = hp, max_hp = hp,
atk = 0,
atk_red = heroEntity:getAttrValue(ATTR_NAME.ATK_RED) // DEFAULT_FACTOR,
atk_yellow = heroEntity:getAttrValue(ATTR_NAME.ATK_YELLOW) // DEFAULT_FACTOR,
atk_green = heroEntity:getAttrValue(ATTR_NAME.ATK_GREEN) // DEFAULT_FACTOR,
atk_blue = heroEntity:getAttrValue(ATTR_NAME.ATK_BLUE) // DEFAULT_FACTOR,
atk_purple = heroEntity:getAttrValue(ATTR_NAME.ATK_PURPLE) // DEFAULT_FACTOR,
} }
} }
---- 攻击力
for matchType, attrName in pairs(GConst.MATCH_ATTACK_NAME) do
unitData.attr[attrName] = heroEntity:getAttrValue(attrName)
end
---- 暴击率
for matchType, attrName in pairs(GConst.MATCH_CRIT_NAME) do
unitData.attr[attrName] = heroEntity:getAttrValue(attrName)
end
---- 暴击伤害
for matchType, attrName in pairs(GConst.MATCH_CRIT_TIME_NAME) do
unitData.attr[attrName] = heroEntity:getAttrValue(attrName)
end
---- 治疗效果
for matchType, attrName in pairs(GConst.MATCH_CURED_NAME) do
unitData.attr[attrName] = heroEntity:getAttrValue(attrName)
end
---- 普攻增伤固定值
for matchType, attrName in pairs(GConst.MATCH_NORMAL_HURT_NAME) do
unitData.attr[attrName] = heroEntity:getAttrValue(attrName)
end
---- 普攻增伤百分比
for matchType, attrName in pairs(GConst.MATCH_NORMAL_HURTP_NAME) do
unitData.attr[attrName] = heroEntity:getAttrValue(attrName)
end
---- 技能增伤固定值
for matchType, attrName in pairs(GConst.MATCH_SKILL_HURT_NAME) do
unitData.attr[attrName] = heroEntity:getAttrValue(attrName)
end
---- 技能增伤百分比
for matchType, attrName in pairs(GConst.MATCH_SKILL_HURTP_NAME) do
unitData.attr[attrName] = heroEntity:getAttrValue(attrName)
end
local skillInfo = skillCfg[skillId] local skillInfo = skillCfg[skillId]
if skillInfo then if skillInfo then
if skillInfo.effect_type == 1 then -- 主动 if skillInfo.effect_type == 1 then -- 主动

View File

@ -194,16 +194,19 @@ function BattleTeamEntity:getWeakness(matchType)
return self:getAttrValue(ATTR_NAME.WEAKNESS_ALL) + self:getAttrValue(MATCH_WEAKNESS_NAME[matchType]) return self:getAttrValue(ATTR_NAME.WEAKNESS_ALL) + self:getAttrValue(MATCH_WEAKNESS_NAME[matchType])
end end
function BattleTeamEntity:getCrittime() function BattleTeamEntity:getCrittime(matchType)
return self:getAttrValue(ATTR_NAME.CRIT_TIME) local matchCritTime = self:getAttrValue(GConst.MATCH_CRIT_TIME_NAME[matchType])
return self:getAttrValue(ATTR_NAME.CRIT_TIME) + matchCritTime
end end
function BattleTeamEntity:getCrit() function BattleTeamEntity:getCrit(matchType)
return self:getAttrValue(ATTR_NAME.CRIT) local matchCrit = self:getAttrValue(GConst.MATCH_CRIT_NAME[matchType])
return self:getAttrValue(ATTR_NAME.CRIT) + matchCrit
end end
function BattleTeamEntity:getCureAddition() function BattleTeamEntity:getCureAddition(matchType)
return self:getAttrValue(ATTR_NAME.CURE_ADDITION) local matchAddtion = self:getAttrValue(GConst.MATCH_CURED_NAME[matchType])
return self:getAttrValue(ATTR_NAME.CURE_ADDITION) + matchAddtion
end end
function BattleTeamEntity:getCureDec() function BattleTeamEntity:getCureDec()
@ -332,8 +335,25 @@ function BattleTeamEntity:getCounterAttack()
return self:getAttrValue(ATTR_NAME.COUNTER_ATTACK) return self:getAttrValue(ATTR_NAME.COUNTER_ATTACK)
end end
function BattleTeamEntity:getSkillHurt() function BattleTeamEntity:getSkillHurtP(matchType)
return self:getAttrValue(ATTR_NAME.SKILL_HURT) local skillHurtPName = GConst.MATCH_SKILL_HURTP_NAME[matchType]
return self:getAttrValue(ATTR_NAME.SKILL_HURTP) + self:getAttrValue(skillHurtPName)
end
function BattleTeamEntity:getSkillHurtFixed(matchType)
local skillHurtName = GConst.MATCH_SKILL_HURT_NAME[matchType]
return self:getAttrValue(skillHurtName)
end
function BattleTeamEntity:getNormalSkillHurtP(matchType)
local skillHurtName = GConst.MATCH_NORMAL_HURTP_NAME[matchType]
return self:getAttrValue(skillHurtName)
end
function BattleTeamEntity:getNormalSkillHurtFixed(matchType)
local skillHurtName = GConst.MATCH_NORMAL_HURT_NAME[matchType]
return self:getAttrValue(skillHurtName)
end end
function BattleTeamEntity:takeDamageOrCure(num) function BattleTeamEntity:takeDamageOrCure(num)

View File

@ -295,24 +295,24 @@ function BattleUnitEntity:getDmgDec()
return self.team:getDmgDec(self.unitData.matchType) return self.team:getDmgDec(self.unitData.matchType)
end end
function BattleUnitEntity:getDecDmg(matchType) function BattleUnitEntity:getDecDmg()
return self.team:getDecDmg(matchType) return self.team:getDecDmg(self.unitData.matchType)
end end
function BattleUnitEntity:getWeakness(matchType) function BattleUnitEntity:getWeakness()
return self.team:getWeakness(matchType) return self.team:getWeakness(self.unitData.matchType)
end end
function BattleUnitEntity:getCrit() function BattleUnitEntity:getCrit()
return self.team:getCrit() return self.team:getCrit(self.unitData.matchType)
end end
function BattleUnitEntity:getCrittime() function BattleUnitEntity:getCrittime()
return self.team:getCrittime() return self.team:getCrittime(self.unitData.matchType)
end end
function BattleUnitEntity:getCureAddition() function BattleUnitEntity:getCureAddition()
return self.team:getCureAddition() return self.team:getCureAddition(self.unitData.matchType)
end end
function BattleUnitEntity:getCureDec() function BattleUnitEntity:getCureDec()
@ -355,8 +355,20 @@ function BattleUnitEntity:getCounterAttack()
return self.team:getCounterAttack() return self.team:getCounterAttack()
end end
function BattleUnitEntity:getSkillHurt() function BattleUnitEntity:getSkillHurtP()
return self.team:getSkillHurt() return self.team:getSkillHurtP(self.unitData.matchType)
end
function BattleUnitEntity:getSkillHurtFixed()
return self.team:getSkillHurtFixed(self.unitData.matchType)
end
function BattleUnitEntity:getNormalSkillHurtP()
return self.team:getNormalSkillHurtP(self.unitData.matchType)
end
function BattleUnitEntity:getNormalSkillHurtFixed()
return self.team:getNormalSkillHurtFixed(self.unitData.matchType)
end end
function BattleUnitEntity:addLimit(name, buffEffect) function BattleUnitEntity:addLimit(name, buffEffect)

View File

@ -134,12 +134,14 @@ function HeroEntity:getAttrValue(name)
end end
function HeroEntity:getAtk() function HeroEntity:getAtk()
local atkAddName = GConst.MATCH_ATTACK_ADD_NAME[self:getMatchType()]
local atkName = GConst.MATCH_ATTACK_NAME[self:getMatchType()] local atkName = GConst.MATCH_ATTACK_NAME[self:getMatchType()]
return self:getAttrValue(atkName) return self:getAttrValue(atkName) + self:getAttrValue(atkAddName)
end end
function HeroEntity:getHp() function HeroEntity:getHp()
return self:getAttrValue(GConst.BattleConst.ATTR_NAME.HP) local atkAddName = GConst.MATCH_HP_ADD_NAME[self:getMatchType()]
return self:getAttrValue(GConst.BattleConst.ATTR_NAME.HP) + self:getAttrValue(atkAddName)
end end
function HeroEntity:setDirty() function HeroEntity:setDirty()