diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/XiuxianLevelUpRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/XiuxianLevelUpRequestHandler.java index a154725c0..36684387f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/XiuxianLevelUpRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/XiuxianLevelUpRequestHandler.java @@ -1,5 +1,6 @@ package com.ljsd.jieling.handler.hero; +import com.googlecode.protobuf.format.JsonFormat; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.handler.BaseHandler; @@ -43,20 +44,42 @@ public class XiuxianLevelUpRequestHandler extends BaseHandler= maxLevel) { throw new ErrorCodeException("已修行至最大等级"); } - int integerValue = SSpecialConfig.getIntegerValue(SSpecialConfig.FightForPerXiuweiLevel); int maxForce = playerInfoManager.getMaxForce(); - int curMaxLevel = maxForce / integerValue; + long[] fightForPerXiuweiForces = SSpecialConfig.getOnceArrayLongValue(SSpecialConfig.FightForPerXiuweiForces); + int curIndex = -1; + for (int i = 0; i < fightForPerXiuweiForces.length; i++) { + if (maxForce < fightForPerXiuweiForces[i]) { + curIndex = i; + break; + } + } + int curMaxLevel = 0; + if (curIndex == -1) { + curMaxLevel = maxLevel; + } else { + int integerValue[] = SSpecialConfig.getIntegerArrayValue(SSpecialConfig.FightForPerXiuweiLevel); + int fightForPerXiuweiLevel = integerValue[curIndex]; + if (curIndex - 1 >= 0) { + maxForce -= fightForPerXiuweiForces[curIndex - 1]; + } + curMaxLevel = maxForce / fightForPerXiuweiLevel; + if (curIndex - 1 >= 0) { + curMaxLevel += maxLevelArr[curIndex - 1]; + } + } if (xiuweiLevel >= curMaxLevel) { throw new ErrorCodeException("已修行至当前战力最大等级"); } heroManager.setXiuweiLevel(curMaxLevel); HeroInfoProto.XiuxianLevelUpResponse xiuxianLevelUpResponse = HeroInfoProto.XiuxianLevelUpResponse.newBuilder() - .setXiuxianLevel(heroManager.getXiuweiLevel()) + .setXiuxianLevel(curMaxLevel) .build(); + String s = JsonFormat.printToString(xiuxianLevelUpResponse); MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.XIUXIAN_XIUWEI_UP_RESPONSE_VALUE, xiuxianLevelUpResponse, true); } } diff --git a/tablemanager/src/main/java/config/SSpecialConfig.java b/tablemanager/src/main/java/config/SSpecialConfig.java index 8cb4c3212..05629b16f 100644 --- a/tablemanager/src/main/java/config/SSpecialConfig.java +++ b/tablemanager/src/main/java/config/SSpecialConfig.java @@ -39,6 +39,7 @@ public class SSpecialConfig implements BaseConfig { public static final String MaxXiuweiLevel = "MaxXiuweiLevel";//修为等级最大值 public static final String FightForPerXiuweiLevel = "FightForPerXiuweiLevel";//修为单级别所需战力 + public static final String FightForPerXiuweiForces = "FightForPerXiuweiForces";//修为各阶段最大战力 public static final String DailyNumForStarsOfHardStage = "DailyNumForStarsOfHardStage";//每有1困难关卡星级每日可领取玉衡龙魂丹数量 public static final String BasicNumOfHardStage = "BasicNumOfHardStage";//每日领取玉衡龙魂丹基础数量 @@ -158,6 +159,17 @@ public class SSpecialConfig implements BaseConfig { } return arrayNum; } + + public static long[] getOnceArrayLongValue(String key) { + String value = enumers.get(key); + String[] array = value.split("\\#"); + long[] arrayNum = new long[array.length]; + for (int i = 0; i < array.length; i++) { + arrayNum[i] = Long.parseLong(array[i]); + } + return arrayNum; + } + public static List getListValue(String key) { List list = new LinkedList<>(); String value = enumers.get(key);