From de1432222fc681e60232fd857749483d7460ff75 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Wed, 9 Jun 2021 03:46:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A0=E5=B0=BD=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/function/EndlessFunction.java | 1 + .../handler/map/EndlessTreasureReward.java | 5 --- .../map/GetEndlessHeroInfoListHandler.java | 6 +--- .../ljsd/jieling/handler/map/MapLogic.java | 18 ++++++---- .../ljsd/jieling/handler/map/MapManager.java | 4 ++- .../map/behavior/FiftyFourBehavior.java | 36 +++++++++++++++++++ .../map/behavior/FiftyThreeBehavior.java | 2 +- .../com/ljsd/jieling/logic/dao/root/User.java | 1 + .../ljsd/jieling/logic/fight/FightUtil.java | 12 ++++--- .../ljsd/jieling/logic/hero/HeroLogic.java | 6 ++-- .../mission/main/DailyMissionIdsType.java | 14 ++++---- 11 files changed, 73 insertions(+), 32 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FiftyFourBehavior.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/function/EndlessFunction.java b/serverlogic/src/main/java/com/ljsd/jieling/core/function/EndlessFunction.java index 03b85ed01..6ba7b0ff0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/function/EndlessFunction.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/function/EndlessFunction.java @@ -46,6 +46,7 @@ public class EndlessFunction implements FunctionManager { MapInfoProto.EndlessMapChange info = MapInfoProto.EndlessMapChange.newBuilder().setMapId(mapId).build(); for(Map.Entry entry:onlineUserMap.entrySet()){ + System.out.println("无尽推送"+ entry.getKey()+":"+mapId); MessageUtil.sendIndicationMessage(entry.getValue(),1, MessageTypeProto.MessageType.ENDLESS_MAP_CHANGE_INDICATION_VALUE,info,true); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EndlessTreasureReward.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EndlessTreasureReward.java index 7050974d0..ba4b573ef 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EndlessTreasureReward.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EndlessTreasureReward.java @@ -27,11 +27,6 @@ public class EndlessTreasureReward extends MongoBase { setIsBuy(0); } - @Override - public void init(int id, String mongoKey) { - super.init(id, mongoKey); - } - public int getCreateTime() { return createTime; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/GetEndlessHeroInfoListHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/GetEndlessHeroInfoListHandler.java index cd95535bc..983c77bf1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/GetEndlessHeroInfoListHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/GetEndlessHeroInfoListHandler.java @@ -68,10 +68,8 @@ public class GetEndlessHeroInfoListHandler extends BaseHandler getOpenCells(List cells){ - int[] offset = new int[]{-256,-512,256,512,-1,-2,1,2,-257,257,-255,255,0}; + int square = 3;//范围是3 Set openCells= new HashSet<>(); for(int cell:cells){ - for(int off:offset){ - if(!endlessMapCell.contains(cell+off)){ - continue; + for(int i =-square;i<=square;i++){ + int yOff = square - Math.abs(i); + for(int j = -yOff;j<=yOff;j++){ + int openCell = cell + 256 * i + j; + if(!endlessMapCell.contains(openCell)){ + continue; + } + openCells.add(openCell); } - openCells.add(cell+off); } } return openCells; @@ -1192,7 +1196,7 @@ public class MapLogic { if(user.getMapManager().getCurMapId()!=0&&SChallengeConfig.sChallengeConfigs.get(user.getMapManager().getCurMapId()).getType()==4){ TimeControllerOfFunction openTimeOfFuntionCacheByType = GlobalDataManaager.getInstance().getOpenTimeOfFuntionCacheByType(FunctionIdEnum.Endless); - if(user.getMapManager().getEndlessMapInfo().getSeason()!=openTimeOfFuntionCacheByType.getTimes()){ + if(openTimeOfFuntionCacheByType!=null&&user.getMapManager().getEndlessMapInfo().getSeason()!=openTimeOfFuntionCacheByType.getTimes()){ onlyLevelMap(user,false); user.getMapManager().setEndlessMapInfo(new EndlessMapInfo()); } @@ -3112,7 +3116,7 @@ public class MapLogic { /** * 试炼副本保存阵容 * @param session - * @param heroIds + * @param heroes * @param messageType * @throws Exception */ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java index 3a8c8bca6..5f2ad4037 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java @@ -271,11 +271,13 @@ public class MapManager extends MongoBase { //行动力回复 if(itemId==1){ TimeControllerOfFunction openTimeOfFuntionCacheByType = GlobalDataManaager.getInstance().getOpenTimeOfFuntionCacheByType(FunctionIdEnum.Endless); - if(user.getMapManager().endlessMapInfo.getSeason()!=openTimeOfFuntionCacheByType.getTimes()){ + if(openTimeOfFuntionCacheByType!=null&&user.getMapManager().endlessMapInfo.getSeason()!=openTimeOfFuntionCacheByType.getTimes()){ long startTime = openTimeOfFuntionCacheByType.getStartTime(); recoveryTimes = (updateTime - (int)(startTime/1000))/recoveryItemInfo[2]; item.setItemNum(200); + itemNum=200; item.setEndingTime((int)(startTime/1000)); + lastUpdateEnergyTime = (int)(startTime/1000); } } if( recoveryTimes>0){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FiftyFourBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FiftyFourBehavior.java new file mode 100644 index 000000000..9634c6a3e --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FiftyFourBehavior.java @@ -0,0 +1,36 @@ +package com.ljsd.jieling.handler.map.behavior; + +import com.ljsd.jieling.handler.map.EventType; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.mission.GameEvent; +import org.springframework.stereotype.Component; +import rpc.protocols.FightInfoProto; +import rpc.protocols.MapInfoProto; + +/** + * @author lvxinran + * @date 2021/5/30 + * @discribe + */ +@Component +public class FiftyFourBehavior extends BaseBehavior { + @Override + public int getBehaviorType() { + return EventType.fiftyFour; + } + + @Override + public boolean process(int optionId, User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { + String readyInfo = behaviorTypeValues[0][0] + "#" + Integer.toString(optionId); + BehaviorUtil.fightReady(user.getId(), readyInfo); + + return true; + } + + @Override + public boolean afterFight(User user, int[][] behaviorTypeValues, FightInfoProto.FightEndResponse.Builder fightEndResponse) throws Exception { + BehaviorUtil.destoryPoint(user, behaviorTypeValues[0][1]); + user.getUserMissionManager().onGameEvent(user, GameEvent.ENDLESS_KILL_LAST_BOSS); + return true; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FiftyThreeBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FiftyThreeBehavior.java index 5226a9b75..f3bf2f174 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FiftyThreeBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FiftyThreeBehavior.java @@ -31,7 +31,7 @@ public class FiftyThreeBehavior extends BaseBehavior { Map newHpMap = new HashMap<>(); - endlessHeroInfo.forEach((k,v)-> newHpMap.put(k,v==0?0: Math.min(v+behaviorTypeValues[0][0],10000))); + endlessHeroInfo.forEach((k,v)-> newHpMap.put(k,Math.min(v+behaviorTypeValues[0][0],10000))); user.getMapManager().updateEndlessHero(newHpMap); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/User.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/User.java index 551e941ee..62901afbd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/User.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/User.java @@ -85,6 +85,7 @@ public class User { this.itemManager.init(id, MongoKey.itemManager); this.heroManager.init(id, MongoKey.heroManager); this.mapManager.init(id, MongoKey.mapManager); + mapManager.getEndlessTreasureReward().init(id,MongoKey.mapManager+"."+"endlessTreasureReward"); this.teamPosManager.init(id, MongoKey.teamPosManager); this.mailManager.init(id, MongoKey.mailManager); this.equipManager.init(id, MongoKey.equipManager); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java index 204da177d..6238d081a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java @@ -343,13 +343,17 @@ public class FightUtil { int moraleLevel = user.getMapManager().getEndlessMapInfo().getMoraleLevel(); StringBuilder moraleSkillBuilder = new StringBuilder(); Map moraleMap = new HashMap<>(); - if(moraleLevel!=1){ + if(moraleLevel!=0){ Map config = STableManager.getConfig(SEndlessMorale.class); + + SEndlessMorale levelMorale = config.get(moraleLevel+1); + //士气属性 + for(int[] prop:levelMorale.getProps()){ + moraleMap.put(prop[0],moraleMap.getOrDefault(prop[0],0)+prop[1]); + } + for(int i = 2;iset.add(heroManager.getEndlessHeroInfo().get(heroId.getHeroId()).getTemplateId())); }else{ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/DailyMissionIdsType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/DailyMissionIdsType.java index 5a0ab27b9..4707e3fba 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/DailyMissionIdsType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/DailyMissionIdsType.java @@ -83,13 +83,15 @@ public class DailyMissionIdsType extends AbstractMissionType{ MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId, MissionState.DOING, null); boolean flag = false; - for (MissionStateChangeInfo missionStateChangeInfo : missionStateChangeInfos) { - if (missionStateChangeInfo.getMissionId() == missionId) { - flag = true; + if(missionStateChangeInfos!=null){ + for (MissionStateChangeInfo missionStateChangeInfo : missionStateChangeInfos) { + if (missionStateChangeInfo.getMissionId() == missionId) { + flag = true; + } + } + if (!flag) { + missionStateChangeInfos.add(doingInfo); } - } - if (!flag) { - missionStateChangeInfos.add(doingInfo); } continue; }