diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/ChallengeHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/ChallengeHandler.java index ae5545352..a9c12b43c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/ChallengeHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/ChallengeHandler.java @@ -4,7 +4,6 @@ import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.handler.BaseHandler; -import com.ljsd.jieling.handler.map.MapLogic; import com.ljsd.jieling.logic.dao.TeamEnum; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; @@ -18,8 +17,6 @@ import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; import config.SChallengeStage; -import config.SDailyChallengeConfig; -import config.SLotterySetting; import manager.STableManager; import org.springframework.stereotype.Component; import rpc.protocols.CommonProto; @@ -44,27 +41,18 @@ public class ChallengeHandler extends BaseHandler config = STableManager.getConfig(SLotterySetting.class); - + int id = proto.getId(); SChallengeStage sChallengeConfig = STableManager.getConfig(SChallengeStage.class).get(id); - SChallengeStage lastChange = STableManager.getConfig(SChallengeStage.class).get(id - 1); if (sChallengeConfig == null) { throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } - //次數 - /*boolean consume = PlayerLogic.getInstance().checkAndUpdate(user, sChallengeConfig.getPivilegeID()[1], 1); - if (!consume) { - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - }*/ int endlessNewReplicaLexel = user.getPlayerInfoManager().getEndlessNewReplica(); int treasureReplicaLexel = user.getPlayerInfoManager().getTreasureReplica(); /* @@ -72,29 +60,34 @@ public class ChallengeHandler extends BaseHandlerid){ - MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.ExplorerMapEventResponse.getNumber(), builder.build(), true); - return; - } - }else if(type == 2){ - if(treasureReplicaLexel>id){ - MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.ExplorerMapEventResponse.getNumber(), builder.build(), true); - return; - } + //次數 + boolean consume = PlayerLogic.getInstance().checkAndUpdate(user, sChallengeConfig.getPivilegeID()[1], 1); + if (!consume) { + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + if (type == 1) { + if (endlessNewReplicaLexel > id) { + MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.CHALLENGE_RESPONSE.getNumber(), builder.build(), true); + return; + } + } else if (type == 2) { + if (treasureReplicaLexel > id) { + MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.CHALLENGE_RESPONSE.getNumber(), builder.build(), true); + return; + } } //扫荡 = 保底 +总奖励 Map comDropMap = new HashMap<>(); - /*for(int [] fix : sChallengeConfig.getFixedReward()){ + for (int[] fix : sChallengeConfig.getFixedReward()) { if (comDropMap.containsKey(fix[0])) { comDropMap.put(fix[0], comDropMap.get(fix[0]) + fix[1]); } else { comDropMap.put(fix[0], fix[1]); } - }*/ - for(int [] fix : sChallengeConfig.getPassReward()){ + } + for (int[] fix : sChallengeConfig.getPassReward()) { if (comDropMap.containsKey(fix[0])) { comDropMap.put(fix[0], comDropMap.get(fix[0]) + fix[1]); } else { @@ -104,63 +97,83 @@ public class ChallengeHandler extends BaseHandler new int[]{n.getKey(), n.getValue()}).toArray(int[][]::new), BIReason.EXPLORE_MAP_COST_RETURN); builder.setDrop(drop); - }else{ + } else { GameFightType fightType = GameFightType.EndlessNewTeam; - if(type ==1){ + if (type == 1) { fightType = GameFightType.EndlessNewTeam; - if(sChallengeConfig.getNextLevel()!=endlessNewReplicaLexel){ - MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.ExplorerMapEventResponse.getNumber(), builder.build(), true); + if (sChallengeConfig.getNextLevel() != endlessNewReplicaLexel) { + MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.CHALLENGE_RESPONSE.getNumber(), builder.build(), true); return; - }else{ + } else { user.getPlayerInfoManager().setEndlessNewReplica(id); } - }else if(type == 2){ + } else if (type == 2) { fightType = GameFightType.TreasureTeam; - if(sChallengeConfig.getNextLevel()!= treasureReplicaLexel){ - MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.ExplorerMapEventResponse.getNumber(), builder.build(), true); + if (sChallengeConfig.getNextLevel() != treasureReplicaLexel) { + MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.CHALLENGE_RESPONSE.getNumber(), builder.build(), true); return; - }else{ + } else { user.getPlayerInfoManager().setTreasureReplica(id); } } PVEFightEvent pveFightEvent = new PVEFightEvent(user.getId(), TeamEnum.FORMATION_NORMAL.getTeamId(), 1000, "", - fightType, 810020, 3); + fightType, sChallengeConfig.getMonsterGroup(), 3); FightResult fightResult = FightDispatcher.dispatcher(pveFightEvent); Map comDropMap = new HashMap<>(); - /*for(int [] fix : sChallengeConfig.getFixedReward()){ + for (int[] fix : sChallengeConfig.getFixedReward()) { if (comDropMap.containsKey(fix[0])) { comDropMap.put(fix[0], comDropMap.get(fix[0]) + fix[1]); } else { comDropMap.put(fix[0], fix[1]); } - }*/ + } //首次通关 给 保底 +总奖励 +通关奖励 - if ((int) fightResult.getCheckResult()[0] == 1){ + if ((int) fightResult.getCheckResult()[0] == 1) { //赢了 - for(int [] fix : sChallengeConfig.getPassReward()){ + for (int[] fix : sChallengeConfig.getPassReward()) { if (comDropMap.containsKey(fix[0])) { comDropMap.put(fix[0], comDropMap.get(fix[0]) + fix[1]); } else { comDropMap.put(fix[0], fix[1]); } } - for(int [] fix : sChallengeConfig.getVictoryReward()){ + for (int[] fix : sChallengeConfig.getVictoryReward()) { if (comDropMap.containsKey(fix[0])) { comDropMap.put(fix[0], comDropMap.get(fix[0]) + fix[1]); } else { comDropMap.put(fix[0], fix[1]); } } - - }else{ + } else { //没打过 保底+总奖励*奖励百分比 //输了 - for(int [] fix : sChallengeConfig.getPassReward()){ + int[][] reward1 = sChallengeConfig.getReward1(); + int ratio = 0; + if (type == 1) {//无尽副本 血量 + long leaveHp = fightResult.getCheckResult()[2] + fightResult.getCheckResult()[3] + fightResult.getCheckResult()[4] + + fightResult.getCheckResult()[5] + fightResult.getCheckResult()[6]; + for (int[] percent : reward1) { + if (percent[0] > leaveHp) { + break; + } + ratio = percent[1]; + } + } else if (type == 2) {//回合数 + long times = fightResult.getCheckResult()[1];//回合数 + for (int[] percent : reward1) { + if (percent[0] > times) { + break; + } + ratio = percent[1]; + } + } + LOGGER.info("challengeHandler ====>id:{},ratio:{}", sChallengeConfig.getId(), ratio); + for (int[] fix : sChallengeConfig.getPassReward()) { if (comDropMap.containsKey(fix[0])) { - comDropMap.put(fix[0], comDropMap.get(fix[0]) + (int)(fix[1]*0.5)); + comDropMap.put(fix[0], comDropMap.get(fix[0]) + (int) (fix[1] * (ratio / 10000))); } else { - comDropMap.put(fix[0], (int)(fix[1]*0.5)); + comDropMap.put(fix[0], (int) (fix[1] * (ratio / 10000))); } } } @@ -177,6 +190,6 @@ public class ChallengeHandler extends BaseHandler config = STableManager.getConfig(SChallengeStage.class); - }