back_recharge
jiahuiwen 2019-04-01 20:33:21 +08:00
commit 5de5a252ed
7 changed files with 49 additions and 33 deletions

View File

@ -133,8 +133,7 @@ function BuffManager:Update()
else
buffList = self.buffList.kvList[buff.id]
end
local count = buffList.size
if buff.cover and count > 0 then
if buff.cover and buffList.size > 0 then
if buffList.buffer[1]:OnCover(buff) then --判定该效果能否被覆盖
buffList.buffer[1]:OnEnd(self.owner)
self.owner.Event:DispatchEvent(BattleEventName.BuffEnd, buffList.buffer[1])
@ -145,12 +144,12 @@ function BuffManager:Update()
self.owner.Event:DispatchEvent(BattleEventName.BuffCover, buff)
end
else
if buff.maxCount == 0 or count < buff.maxCount then --限制相同效果的数量为0则不限制
if buff.maxCount == 0 or buffList.size < buff.maxCount then --限制相同效果的数量为0则不限制
buffList:Add(buff)
buff.target = self.owner
buff:OnStart()
self.owner.Event:DispatchEvent(BattleEventName.BuffStart, buff)
self.owner.Event:DispatchEvent(BattleEventName.BuffCountChange, buff.id, count)
self.owner.Event:DispatchEvent(BattleEventName.BuffCountChange, buff.id, buffList.size)
end
end
end

View File

@ -245,7 +245,6 @@ local effectList = {
local f1 = args[1]
local dt = args[2]
local f2 = args[3]
caster.Event:DispatchEvent(BattleEventName.RoleViewBullet, interval)
if caster.camp == 0 and target.camp == 1 then
BattleLogic.Event:DispatchEvent(BattleEventName.ZoomChange, target, interval)

View File

@ -3,7 +3,7 @@ RoleData.__index = RoleData
local max = math.max
local floor = math.floor
function RoleData.New()
local instance = {role=0, data={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}
local instance = {role=0, data={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}
setmetatable(instance, RoleData)
return instance
end

View File

@ -61,28 +61,17 @@ RoleDataName = {
Crit = indexAdd(), --暴击率(%
CritDamageFactor = indexAdd(), --暴击伤害系数(%
TreatFacter = indexAdd(),--治疗加成系数(%
FireDamageBocusFactor = indexAdd(), --火系伤害加成系数(%
FireDamageReduceFactor = indexAdd(), --火系伤害减免系数(%
WindDamageBocusFactor = indexAdd(), --风系伤害加成系数(%
WindDamageReduceFactor = indexAdd(), --风系伤害减免系数(%
IceDamageBocusFactor = indexAdd(), --冰系伤害加成系数(%
IceDamageReduceFactor = indexAdd(), --冰系伤害减免系数(%
LandDamageBocusFactor = indexAdd(), --地系伤害加成系数(%
LandDamageReduceFactor = indexAdd(), --地系伤害减免系数(%
LightDamageBocusFactor = indexAdd(), --光系伤害加成系数(%
LightDamageReduceFactor = indexAdd(), --光系伤害减免系数(%
DarkDamageBocusFactor = indexAdd(), --暗系伤害加成系数(%
DarkDamageReduceFactor = indexAdd(), --暗系伤害减免系数(%
ElementDamageBocusFactor = indexAdd(), --属性伤害加成系数(%
}
BuffName = {
Poison = "Poison",
PropertyChange = "PropertyChange",
Taunt = "Taunt",
Bleed = "Bleed",
Frozen = "Frozen",
Stun = "Stun",
HOT = "HOT",
DOT = "DOT",
Control = "Control",

View File

@ -120,14 +120,25 @@ function BattleUtil.CalDamage(atkRole, defRole, damageType, baseFactor, ignoreDe
end
local atkData, defData = atkRole.data, defRole.data
--伤害 =(基础伤害*1+己伤害加成-目标伤害减免)*1+己方属性伤害加成-目标属性伤害减免10%*己攻)
baseDamage = baseDamage * baseFactor *
(1 + atkData:GetData(RoleDataName.DamageBocusFactor)) * (1 - defData:GetData(RoleDataName.DamageReduceFactor)) *
(1 + atkData:GetData(RoleDataName.FireDamageBocusFactor)) * (1 - defData:GetData(RoleDataName.FireDamageReduceFactor)) * --火系
(1 + atkData:GetData(RoleDataName.WindDamageBocusFactor)) * (1 - defData:GetData(RoleDataName.WindDamageReduceFactor)) * --风系
(1 + atkData:GetData(RoleDataName.IceDamageBocusFactor)) * (1 - defData:GetData(RoleDataName.IceDamageReduceFactor)) * --冰系
(1 + atkData:GetData(RoleDataName.LandDamageBocusFactor)) * (1 - defData:GetData(RoleDataName.LandDamageReduceFactor)) * --地系
(1 + atkData:GetData(RoleDataName.LightDamageBocusFactor)) * (1 - defData:GetData(RoleDataName.LightDamageReduceFactor)) * --光系
(1 + atkData:GetData(RoleDataName.DarkDamageBocusFactor)) * (1 - defData:GetData(RoleDataName.DarkDamageReduceFactor)) --暗系
local element = 1
local elementDamageReduceFactor = RoleDataName.FireDamageReduceFactor
if atkRole.element == 1 then
elementDamageReduceFactor = RoleDataName.FireDamageReduceFactor
elseif atkRole.element == 2 then
elementDamageReduceFactor = RoleDataName.WindDamageReduceFactor
elseif atkRole.element == 3 then
elementDamageReduceFactor = RoleDataName.IceDamageReduceFactor
elseif atkRole.element == 4 then
elementDamageReduceFactor = RoleDataName.LandDamageReduceFactor
elseif atkRole.element == 5 then
elementDamageReduceFactor = RoleDataName.LightDamageReduceFactor
elseif atkRole.element == 6 then
elementDamageReduceFactor = RoleDataName.DarkDamageReduceFactor
end
element = (1 + atkData:GetData(RoleDataName.ElementDamageBocusFactor)) * (1 - defData:GetData(elementDamageReduceFactor))
baseDamage = baseDamage * baseFactor * element
baseDamage = max(baseDamage, 0.1 * attack)
local func

View File

@ -26,6 +26,7 @@ public class HeroLogic {
private HeroLogic(){}
public static List<Integer> transTemplate = new ArrayList<>();
private static Map<Integer,List<Integer>> transTemplateByHeroPropertyName = new HashMap<>();
static {
transTemplate.add(HeroAttributeEnum.CurHP.getPropertyId()); // 生命
transTemplate.add(HeroAttributeEnum.Hp.getPropertyId()); // 最大生命
@ -40,18 +41,32 @@ public class HeroLogic {
transTemplate.add(HeroAttributeEnum.CritFactor.getPropertyId()); // 暴击率
transTemplate.add(HeroAttributeEnum.CritDamageFactor.getPropertyId()); // 暴击伤害系数
transTemplate.add(HeroAttributeEnum.TreatFacter.getPropertyId()); // 治疗加成系数
transTemplate.add(HeroAttributeEnum.FireDamageBonusFactor.getPropertyId()); // 火系伤害加成系数
// transTemplate.add(HeroAttributeEnum.FireDamageBonusFactor.getPropertyId()); // 火系伤害加成系数
transTemplate.add(HeroAttributeEnum.FireDamageReduceFactor.getPropertyId()); // 火系伤害减免系数
transTemplate.add(HeroAttributeEnum.WindDamageBonusFactor.getPropertyId()); // 风系伤害加成系数
// transTemplate.add(HeroAttributeEnum.WindDamageBonusFactor.getPropertyId()); // 风系伤害加成系数
transTemplate.add(HeroAttributeEnum.WindDamageReduceFactor.getPropertyId()); // 风系伤害减免系数
transTemplate.add(HeroAttributeEnum.WaterDamageBonusFactor.getPropertyId()); // 冰系伤害加成系数
// transTemplate.add(HeroAttributeEnum.WaterDamageBonusFactor.getPropertyId()); // 冰系伤害加成系数
transTemplate.add(HeroAttributeEnum.WaterDamageReduceFactor.getPropertyId());// 冰系伤害减免系数
transTemplate.add(HeroAttributeEnum.LandDamageBonusFactor.getPropertyId()); // 地系伤害加成系数
// transTemplate.add(HeroAttributeEnum.LandDamageBonusFactor.getPropertyId()); // 地系伤害加成系数
transTemplate.add(HeroAttributeEnum.LandDamageReduceFactor.getPropertyId()); // 地系伤害减免系数
transTemplate.add(HeroAttributeEnum.LightDamageBonusFactor.getPropertyId()); // 雷系伤害加成系数
// transTemplate.add(HeroAttributeEnum.LightDamageBonusFactor.getPropertyId()); // 雷系伤害加成系数
transTemplate.add(HeroAttributeEnum.LightDamageReduceFactor.getPropertyId());// 雷系伤害减免系数
transTemplate.add(HeroAttributeEnum.DarkDamageBonusFactor.getPropertyId()); // 暗系伤害加成系数
// transTemplate.add(HeroAttributeEnum.DarkDamageBonusFactor.getPropertyId()); // 暗系伤害加成系数
transTemplate.add(HeroAttributeEnum.DarkDamageReduceFactor.getPropertyId()); // 暗系伤害减免系数
transTemplateByHeroPropertyName.put(1,new ArrayList<>(transTemplate));
transTemplateByHeroPropertyName.put(2,new ArrayList<>(transTemplate));
transTemplateByHeroPropertyName.put(3,new ArrayList<>(transTemplate));
transTemplateByHeroPropertyName.put(4,new ArrayList<>(transTemplate));
transTemplateByHeroPropertyName.put(5,new ArrayList<>(transTemplate));
transTemplateByHeroPropertyName.put(6,new ArrayList<>(transTemplate));
transTemplateByHeroPropertyName.get(1).add(HeroAttributeEnum.FireDamageBonusFactor.getPropertyId());
transTemplateByHeroPropertyName.get(2).add(HeroAttributeEnum.WindDamageBonusFactor.getPropertyId());
transTemplateByHeroPropertyName.get(3).add(HeroAttributeEnum.WaterDamageBonusFactor.getPropertyId());
transTemplateByHeroPropertyName.get(4).add(HeroAttributeEnum.LandDamageBonusFactor.getPropertyId());
transTemplateByHeroPropertyName.get(5).add(HeroAttributeEnum.LightDamageBonusFactor.getPropertyId());
transTemplateByHeroPropertyName.get(6).add(HeroAttributeEnum.DarkDamageBonusFactor.getPropertyId());
}
private static final String VERTICAL = "|";
private static final String DIVISION = "#";
@ -668,7 +683,9 @@ public class HeroLogic {
public StringBuilder getHeroProperty(User user, Hero hero, StringBuilder sb){
Map<Integer, Integer> heroAttributeMap = calHeroFinalAttribute(user, hero);
sb.append(hero.getLevel()).append(DIVISION);
for(Integer templatePropetyId:transTemplate){
SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId());
List<Integer> templatePropetyIds = transTemplateByHeroPropertyName.get(scHero.getPropertyName());
for(Integer templatePropetyId:templatePropetyIds){
Integer propertyValue = heroAttributeMap.get(templatePropetyId);
if(propertyValue == null){
propertyValue =0;

View File

@ -163,6 +163,7 @@ public class FightDataUtil {
unitData.set("camp", 0);
unitData.set("type", 1);
unitData.set("quality", 1);
unitData.set("element", hero.getPropertyName());
unitData.set("skill", getSkill(skillIds[0]));
unitData.set("superSkill", getSkill(skillIds[1]));