diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index 47388b333..930f0822c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -269,7 +269,8 @@ public interface BIReason { int DAILY_SCORE_CONSUME = 1063;//删除日常任务积分 int EQUIP_WEAR_CONSUME = 1064; int GUILD_CHALLENGE_BUFF_BUY_CONSUME = 1065;//公会副本购买buff - int JOURNEY_FIGHT_CONCUME = 1066;//逍遥游攻击boss消耗 + int JOURNEY_FIGHT_CONSUME = 1066;//逍遥游攻击boss消耗 + int JOURNEY_DO_CONSUME = 1067;//逍遥游摇骰子消耗 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventType.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventType.java index 05f3555d1..dcd2a3579 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventType.java @@ -21,7 +21,7 @@ public class EventType { public static final int journeyStore = 26; //逍遥游招募神将 public static final int diceEvent = 27; //双倍骰子 public static final int doubleReward = 28; //双倍奖励 - public static final int journeyFinal = 29; //终极大奖 + public static final int journeyFinal = 31; //终极大奖 /** * 小事件类型 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/JourneyMap.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/JourneyMap.java index 73c36c80d..9fc20d1d2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/JourneyMap.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/JourneyMap.java @@ -17,10 +17,7 @@ import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; import com.ljsd.jieling.util.MonsterUtil; -import config.MapPointConfig; -import config.SCMap; -import config.SFreeTravel; -import config.SFreeTravelStore; +import config.*; import manager.STableManager; import util.CellUtil; import util.MathUtils; @@ -140,11 +137,11 @@ public class JourneyMap { } MapInfoProto.JourneyGetOneInfoResponse.Builder response = MapInfoProto.JourneyGetOneInfoResponse.newBuilder(); PathInfo pathInfo = journeyInfo.get(mapId); + clearByTime(pathInfo);//清除过期信息 if(pathInfo.getCurrentPath()>=pathInfo.getAllPathInfo().length){ init(user,mapId); } - //地图格子信息 Arrays.stream(pathInfo.getAllPathInfo()).forEach(path->{ CommonProto.JourneyCell cell = CommonProto.JourneyCell.newBuilder() @@ -195,6 +192,36 @@ public class JourneyMap { } MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); } + private void clearByTime(PathInfo info){ + if(info.getRemainRandomTime() removeId = new HashSet<>(); + if(!info.getMonsterMap().isEmpty()){ + for(Map.Entry entry:info.getMonsterMap().entrySet()){ + if(entry.getValue().getRemainTime()(); + } + if(!info.getGoodsMap().isEmpty()) { + for(Map.Entry entry:info.getGoodsMap().entrySet()){ + if(entry.getValue().getGoodsRemainTime() map = ItemUtil.arrayToMap(new int[][]{consume}); + if(!ItemUtil.checkCost(user,map)){ + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } int diceNum = pathInfo.getDiceNum(); List randomNum = new ArrayList<>(); @@ -232,19 +264,24 @@ public class JourneyMap { //取总点数和最大格子数,算出走的步数 diceAmount =Math.min(diceAmount,pathInfo.getAllPathInfo().length-pathInfo.getCurrentPath()); +// diceAmount = 1; if(diceAmount==0){ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } +// randomNum.clear(); +// randomNum.add(1); pathInfo.setCurrentPath(pathInfo.getCurrentPath()+diceAmount); Path arrivePath = pathInfo.getAllPathInfo()[pathInfo.getCurrentPath() - 1]; int mapPointId = arrivePath.getMapPointId(); MapInfoProto.JourneyDoResponse.Builder builder = MapInfoProto.JourneyDoResponse.newBuilder().addAllPointes(randomNum); //基础奖励 - int common = travelConfig.getCommonReward(); + int[] common = travelConfig.getCommonReward(); - int[] commonRewardArray = new int[diceAmount]; - Arrays.stream(commonRewardArray).forEach(n->n=common); + int[] commonRewardArray= new int[randomNum.size()] ; + for(int i=0;in=common); + commonRewardArray = new int[randomNum.size()+1]; + for(int i=0;i rewardList = Arrays.stream(pathInfo.getRandomReward()).boxed().collect(Collectors.toList()); @@ -290,7 +329,7 @@ public class JourneyMap { int[] freeTravelBossReward = travelConfig.getFreeTravelBossReward(); int bossId = MathUtils.randomFromArray(freeTravelBoss); int bossReward = MathUtils.randomFromArray(freeTravelBossReward); - JourneyMonster monster = new JourneyMonster(bossId, (int)((TimeUtils.now()+TimeUtils.HOUR*2)/1000),0,bossReward); + JourneyMonster monster = new JourneyMonster(bossId, (int)((TimeUtils.now()+TimeUtils.ONE_MINUTE* SSpecialConfig.getIntegerValue(SSpecialConfig.FREETRAVEL_EVENT_TIME))/1000),0,bossReward); Map> monsterHpByGroup = MonsterUtil.getMonsterHpByGroup(bossId); List list = monsterHpByGroup.get(0); Map hpMap = new HashMap<>(); @@ -302,11 +341,13 @@ public class JourneyMap { for(Map.Entry hp:monster.getRemainHp().entrySet()){ allHp+=hp.getValue(); } - pathInfo.addMonster(TimeUtils.nowInt(),monster); + int monsterId = TimeUtils.nowInt(); + pathInfo.addMonster(monsterId,monster); builder.setMonster(CommonProto.JourneyMonsterInfo.newBuilder().setAttackNum(monster.getAttackNum()) .setMonsterHp(allHp) .setMonsterId(monster.getMonsterId()) - .setMonsterIndex(pathInfo.getMonsterMap().size()) + .setMonsterIndex(monsterId) + .setRemainTime(monster.getRemainTime()) .setRewardShow(monster.getReward())); builder.setOverTime(monster.getRemainTime()); pathType = 5; @@ -318,7 +359,7 @@ public class JourneyMap { goodsArray[i] = sFreeTravelStores.get(i).getID(); } int goodsId = MathUtils.randomFromArray(goodsArray); - JourneyGoods journeyGoods = new JourneyGoods(goodsId, (int) ((TimeUtils.now() + TimeUtils.HOUR * 2) / 1000)); + JourneyGoods journeyGoods = new JourneyGoods(goodsId, (int) ((TimeUtils.now()+TimeUtils.ONE_MINUTE* SSpecialConfig.getIntegerValue(SSpecialConfig.FREETRAVEL_EVENT_TIME)) / 1000)); int index = TimeUtils.nowInt(); pathInfo.addGoods(index,journeyGoods); @@ -341,9 +382,11 @@ public class JourneyMap { pathType = 2; break; case EventType.journeyFinal: - pathType = 1; - commonRewardArray = new int[diceAmount+1]; - Arrays.stream(commonRewardArray).forEach(n->n=common); + pathType = 7; + commonRewardArray = new int[randomNum.size()+1]; + for(int i=0;i remainHp = monster.getRemainHp(); List hps = new ArrayList<>(remainHp.values()); - pveFightEvent.setMonsterRemainHp(hps); + FightResult fightResult = FightDispatcher.dispatcher(pveFightEvent); + int[] checkResult = fightResult.getCheckResult(); MapInfoProto.JourneyFightResponse.Builder response =MapInfoProto.JourneyFightResponse.newBuilder(); if(checkResult[0]==1){ @@ -424,8 +465,10 @@ public class JourneyMap { response.setDrop(drop); pathInfo.removeMonster(bossIndex); }else if(checkResult[0]==0){ + long allHp = 0; for(int i = 2;i