出包前bug

zhangshanxue 2020-08-02 23:44:02 +08:00
parent 8fff0be3c3
commit 3ab0b9c3a8
10 changed files with 106 additions and 64 deletions

View File

@ -1984,7 +1984,7 @@ local passivityList = {
local i1 = args[1]
-- 释放技能后
local onRoleHit = function(target)
if target:IsDead() then
if target:IsDead() and BattleLogic.BuffMgr:HasBuff(target,BuffName.NoDead)==false then
for i = 1, i1 do
role:AddSkill(BattleSkillType.Normal, false, true, nil)
end
@ -4398,8 +4398,18 @@ local passivityList = {
end,
--
[225] = function()
[225] = function(role, args)
--王振兴添加
local f1 = args[1]
local pro1 = args[2]
local ct1 = args[3]
local maxNum = args[4]
-- 紫+橙
local num = OutDataManager.GetOutData(role.camp, OutDataName.MisteryLiquidUsedTimes)
num = min(maxNum, num)
BattleUtil.AddProp(role, pro1, f1 * num, ct1)
end,
-- 斩杀生命低于[a]的敌人
@ -4656,6 +4666,7 @@ local passivityList = {
-- 紫+橙
local num = OutDataManager.GetOutData(role.camp, OutDataName.MisteryLiquidUsedTimes)
num = min(maxNum, num)
BattleUtil.AddProp(role, pro1, f1 * num, ct1)
end,

View File

@ -31,7 +31,7 @@ function Skill:Init(role, effectData, type, targets, isAdd, isRage) --type 0 异
self.owner = role
self.isTeamSkill = isTeamSkill
self.teamSkillType = isTeamSkill and floor(effectData[1] / 100) or 0
self.id = effectData[1] -- 技能ID
self.id = effectData[1] -- 技能ID
self.hitTime = effectData[2] -- 效果命中需要的时间
self.continueTime = effectData[3] -- 命中后伤害持续时间
self.attackCount = effectData[4] -- 伤害持续时间内伤害次数
@ -43,7 +43,7 @@ function Skill:Init(role, effectData, type, targets, isAdd, isRage) --type 0 异
for i=5, #effectData do
local v = effectData[i]
local effectGroup = effectGroupPool:Get() -- chooseId, {effect1, effect2, ...}
effectGroup.chooseId = v[1] --chooseId
effectGroup.chooseId = v[1] -- chooseId
for j=2, #v do -- effectList
local effect = effectPool:Get() -- type, {args, ...}
effect.type = v[j][1]
@ -73,33 +73,34 @@ function Skill:Dispose()
end
local function DoEffect(caster, target, eff, duration, skill)
local e = {type = 0, args = {}}
local e = {type = 0, args = {}}
e.type = eff.type
for i=1, #eff.args do
e.args[i] = eff.args[i]
end
end
-- 检测被动技能对技能参数的影响
local function _PassiveCheck(pe)
if pe then
e = pe
end
end
caster.Event:DispatchEvent(BattleEventName.SkillEffectBefore, skill, e, _PassiveCheck)
target.Event:DispatchEvent(BattleEventName.BeSkillEffectBefore, skill, e, _PassiveCheck)
--
if effect[e.type] then
effect[e.type](caster, target, e.args, duration, skill)
BattleLogManager.Log(
"Take Effect",
"tcamp", target.camp,
"tpos", target.position,
"type", e.type
)
-- 检测被动技能对技能参数的影响
local function _PassiveCheck(pe)
if pe then
e = pe
end
end
caster.Event:DispatchEvent(BattleEventName.SkillEffectBefore, skill, e, _PassiveCheck)
target.Event:DispatchEvent(BattleEventName.BeSkillEffectBefore, skill, e, _PassiveCheck)
--
if effect[e.type] then
effect[e.type](caster, target, e.args, duration, skill)
BattleLogManager.Log(
"Take Effect",
"tcamp", target.camp,
"tpos", target.position,
"type", e.type
)
end
end
function Skill:takeEffect(caster, target, effects, effectIndex, duration, skill)
for k=1, #effects do
-- 如果不是第一个效果对列的第一个效果则判断是否命中
@ -162,7 +163,7 @@ function Skill:Cast(func)
local chooseId = effectGroup.chooseId
local arr = self.effectTargets[i]
if arr and #arr > 0 then
--效果延迟1帧生效
-- 效果延迟1帧生效
BattleLogic.WaitForTrigger(BattleLogic.GameDeltaTime, function()
local effects = effectGroup.effects
local weight = floor(chooseId % 10000 / 100)
@ -172,7 +173,7 @@ function Skill:Cast(func)
end
-- 全部同时生效
for j=1, count do
if arr[j] and not arr[j]:IsRealDead() then
if arr[j] and not arr[j]:IsRealDead() then
-- 检测是否命中
if i == 1 then
self.targetIsHit[arr[j]] = BattleUtil.CheckIsHit(self.owner, arr[j])
@ -244,6 +245,7 @@ function Skill:GetMaxTargetNum()
end
return BattleUtil.GetMaxTargetNum(mainEffect.chooseId)
end
-- 判断是否命中
function Skill:CheckTargetIsHit(role)
return self.targetIsHit[role]
@ -261,4 +263,3 @@ function Skill:EndSkill()
--
self.effectTargets = {}
end

View File

@ -228,8 +228,11 @@ function BattleLogic.TurnRound(debugTurn)
-- buff计算
BattleLogic.BuffMgr:TurnUpdate(1) -- 计算恢复血量
BattleLogic.BuffMgr:TurnUpdate(2) -- 计算持续伤害(除去流血)
-- 如果角色无法释放技能
if not SkillRole:IsAvailable() then
if not SkillRole:IsAvailable() -- 角色不能释放技能
or (SkillRole:IsDead() and not BattleLogic.BuffMgr:HasBuff(SkillRole,BuffName.NoDead)) --将死但没有不死buff
then
BattleLogic.BuffMgr:TurnUpdate(3) -- 计算持续伤害(流血)
BattleLogic.BuffMgr:TurnUpdate(4) -- 计算其他buff
BattleLogic.BuffMgr:PassUpdate() -- 计算buff轮数

View File

@ -26,7 +26,7 @@ function Shield:OnStart()
self.target.buffFilter:Add(immune0)
-- 清除所有负面buff
BattleLogic.BuffMgr:ClearBuff(self.target, function (buff)
return buff.type == BuffName.Control or buff.type == BuffName.Dot
return buff.type == BuffName.Control or buff.type == BuffName.DOT
end)
end
end

View File

@ -52,6 +52,7 @@ BattleEventName = {
HitMiss = indexAdd(),
BeHitMiss = indexAdd(),
CritDamageReduceFactor = indexAdd(), -- 暴击伤害减免系数
SkillCast = indexAdd(), -- 技能攻击前

View File

@ -394,7 +394,6 @@ function BattleUtil.CalDamage(skill, atkRole, defRole, damageType, baseFactor, i
if atkRole.isTeam and not defRole:IsDead() then
return BattleUtil.ApplyDamage(skill, atkRole, defRole, damageType), false
end
-- 计算技能额外伤害系数加成
baseFactor = baseFactor or 1
local factorFunc = function(exFactor) baseFactor = baseFactor + exFactor end
@ -544,6 +543,9 @@ function BattleUtil.CheckIsHit(atkRole, defRole)
return isHit
end
function BattleUtil.RandomAction(rand, action)
if Random.Range01() <= rand and action then
action()

View File

@ -10,8 +10,8 @@ import com.ljsd.jieling.logic.dao.TimeControllerOfFunction;
public class ChampionFunction implements FunctionManager {
@Override
public void startAction(TimeControllerOfFunction timeControllerOfFunction) throws Exception {
ChampionshipLogic.start();
Poster.getPoster().dispatchEvent(new FunctionRefreshEvent(FunctionIdEnum.Arena.getFunctionType(),-1));
// ChampionshipLogic.start();
// Poster.getPoster().dispatchEvent(new FunctionRefreshEvent(FunctionIdEnum.Arena.getFunctionType(),-1));
}
@Override

View File

@ -481,7 +481,11 @@ public class ChampionshipLogic {
public static CommonProto.TeamOneInfo.Builder getChampionBattleInfo(int uid) throws Exception {
SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(uid);
if (sArenaRobotConfig != null) {
return PlayerLogic.getInstance().getRobotTeamInfo(sArenaRobotConfig);
return CommonProto.TeamOneInfo.newBuilder()
.setLevel(sArenaRobotConfig.getRobotLevel())
.setName(sArenaRobotConfig.getRobotName())
.setUid(sArenaRobotConfig.getId());
// return PlayerLogic.getInstance().getRobotTeamInfo(sArenaRobotConfig);
}
MemberInfo memberInfo = RedisUtil.getInstence().getMapEntry(RedisKey.CHAMPION_JOIN, "", Integer.toString(uid), MemberInfo.class);
FamilyFightInfo fightInfo = memberInfo.getFightInfo();
@ -497,25 +501,25 @@ public class ChampionshipLogic {
.setHeadFrame(playerManager.getHeadFrame())
.setLevel(playerManager.getLevel())
.setName(playerManager.getNickName()).setUid(uid);
CommonProto.TeamOneTeamInfo.Builder teamInfo = CommonProto.TeamOneTeamInfo.newBuilder();
teamInfo.setTotalForce(fightInfo.getForce());
if (!fightInfo.getPokenmonIds().isEmpty()) {
teamInfo.addAllPokemonInfos(fightInfo.getPokenmonIds());
}
// int i = 1;
for (Map.Entry<String, FamilyHeroInfo> entry : fightInfo.getHeroAttribute().entrySet()) {
FamilyHeroInfo familyHeroInfo = entry.getValue();
teamInfo.addTeam(CommonProto.TeamSimpleInfo.newBuilder()
.setHeroid(entry.getKey())
.setHeroTid(familyHeroInfo.getTempleteId())
.setStar(familyHeroInfo.getStar())
.setLevel(familyHeroInfo.getLevel())
.setPosition(familyHeroInfo.getPosition())
.build()
);
}
oneInfo.setTeam(teamInfo);
// CommonProto.TeamOneTeamInfo.Builder teamInfo = CommonProto.TeamOneTeamInfo.newBuilder();
// teamInfo.setTotalForce(fightInfo.getForce());
// if (!fightInfo.getPokenmonIds().isEmpty()) {
// teamInfo.addAllPokemonInfos(fightInfo.getPokenmonIds());
// }
//
//// int i = 1;
// for (Map.Entry<String, FamilyHeroInfo> entry : fightInfo.getHeroAttribute().entrySet()) {
// FamilyHeroInfo familyHeroInfo = entry.getValue();
// teamInfo.addTeam(CommonProto.TeamSimpleInfo.newBuilder()
// .setHeroid(entry.getKey())
// .setHeroTid(familyHeroInfo.getTempleteId())
// .setStar(familyHeroInfo.getStar())
// .setLevel(familyHeroInfo.getLevel())
// .setPosition(familyHeroInfo.getPosition())
// .build()
// );
// }
// oneInfo.setTeam(teamInfo);
return oneInfo;
}

View File

@ -134,6 +134,9 @@ public class FightDataUtil {
LuaValue detail = new LuaTable();
int passivityId = Integer.parseInt(unitSkill[i]);
SPassiveSkillLogicConfig sPassiveSkillLogicConfig = SPassiveSkillLogicConfig.getConfig(passivityId);
if(sPassiveSkillLogicConfig.getEffectiveRange()!=1){
continue;
}
detail.rawset(1, LuaValue.valueOf(sPassiveSkillLogicConfig.getType()));
List<LuaValue> effectList = parseArraayToLuaValues(sPassiveSkillLogicConfig.getValue());
int size = effectList.size();

View File

@ -3,6 +3,8 @@ package config;
import manager.STableManager;
import manager.Table;
import java.util.Map;
@Table(name ="ArenaSetting")
public class SArenaSetting implements BaseConfig {
@ -18,6 +20,8 @@ public class SArenaSetting implements BaseConfig {
private int battleFree;
private int[] cost;
private int item;
private int[] price;
@ -26,14 +30,16 @@ public class SArenaSetting implements BaseConfig {
private int pveNum;
private int[] cost;
private int mostTime;
private static SArenaSetting config;
private int battleWinReward;
@Override
private int battleLoseReward;
private static SArenaSetting config;
@Override
public void init() throws Exception {
config = STableManager.getConfig(SArenaSetting.class).get(1);
}
@ -42,7 +48,8 @@ public class SArenaSetting implements BaseConfig {
return config;
}
public int getId() {
public int getId() {
return id;
}
@ -66,6 +73,10 @@ public class SArenaSetting implements BaseConfig {
return battleFree;
}
public int[] getCost() {
return cost;
}
public int getItem() {
return item;
}
@ -82,11 +93,17 @@ public class SArenaSetting implements BaseConfig {
return pveNum;
}
public int[] getCost() {
return cost;
}
public int getMostTime() {
public int getMostTime() {
return mostTime;
}
public int getBattleWinReward() {
return battleWinReward;
}
public int getBattleLoseReward() {
return battleLoseReward;
}
}