diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SAccomplishmentConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SAccomplishmentConfig.java index 9f8b659b1..c35055bde 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SAccomplishmentConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SAccomplishmentConfig.java @@ -23,6 +23,8 @@ public class SAccomplishmentConfig implements BaseConfig { private int[] reward; + + private static Map> sAccomplishmentConfigByMapIdMap; private static Map>> sAccomplishmentConfigByMapIdAndLogicMap; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java index 95dd87ccd..acec9f59e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java @@ -75,6 +75,8 @@ public class SGameSetting implements BaseConfig { private int[] lotterySecurityReward; + private int[] achievementRefreshType; + private static SGameSetting gameSetting; @@ -208,4 +210,8 @@ public class SGameSetting implements BaseConfig { public int[] getLotterySecurityReward() { return lotterySecurityReward; } + + public int[] getAchievementRefreshType() { + return achievementRefreshType; + } } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java index 7320e4eae..6e447d1e3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -10,10 +10,7 @@ import com.ljsd.jieling.logic.GlobalDataManaager; import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.activity.ActivityType; import com.ljsd.jieling.logic.arena.ArenaLogic; -import com.ljsd.jieling.logic.dao.PlayerManager; -import com.ljsd.jieling.logic.dao.RechargeInfo; -import com.ljsd.jieling.logic.dao.RoomInfo; -import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.player.PlayerLogic; @@ -35,6 +32,7 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Set; @Component public class GetPlayerInfoHandler extends BaseHandler{ @@ -96,6 +94,9 @@ public class GetPlayerInfoHandler extends BaseHandler{ alreadyCount+=count; } } + //图鉴信息 + Set heroHandBookSet = user.getHeroManager().getHeroHandBook().keySet(); + Set equipHandBookSet = user.getEquipManager().getEquipHandBook().keySet(); PlayerInfoProto.GetPlayerInfoResponse getPlayerInfoResponse = PlayerInfoProto.GetPlayerInfoResponse.newBuilder() .setPlayer(player) @@ -108,6 +109,7 @@ public class GetPlayerInfoHandler extends BaseHandler{ .setUserCreateTime((int)(playerInfoManager.getCreateTime()/1000)) .addAllRedType(playerInfoManager.getReds()) .setRandCount(alreadyCount) + .addAllHeroHandBook(heroHandBookSet).addAllEquipHandBook(equipHandBookSet) .build(); try { MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_PLAYERINFO_RESPONSE_VALUE, getPlayerInfoResponse, true); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index e61f38ab5..fb277c945 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -814,7 +814,7 @@ public class MapLogic { if(outType == 0||mapManager.getTower()-1==STrialConfig.getHighestTower()){ if(mapManager.getTowerUnusedBuffer()!=null){ mapManager.setTowerUnusedBuffer(new HashMap<>()); - }; + } LOGGER.info("退出地图"); if(challengeConfig.getType()==2){ if(mapManager.getTower()>=1){ @@ -827,6 +827,7 @@ public class MapLogic { } } } + mapManager.setEssenceValue(0); mapManager.setCurrTowerTime(0); boolean result = onlyLevelMap(user, true); @@ -835,9 +836,26 @@ public class MapLogic { return; } } + int time = (int)(mapManager.getCurrTowerTime())/1000; builder.setUseTime(time); LOGGER.info("当前层使用时间{}",time); + //精英本功绩清除计数 + if(challengeConfig.getType()==3){ + int[] achievementRefreshType = SGameSetting.getGameSetting().getAchievementRefreshType(); + List accomplishmentConfig = SAccomplishmentConfig.getsAccomplishmentConfigByMapId(challengeConfig.getMapId()); + MapMission mapMission = mapManager.getCopyMissionProgresById(challengeConfig.getMapId()); + Map copyMissionProgresById = mapMission.getAllMissionProgress(); + for(SAccomplishmentConfig accomplishment:accomplishmentConfig){ + for(int i = 0 ; i {},nextEventId=>{}", uid, nextEventId); - MapMissionManager.updateMapMission(user, EventType.fightEvent, groupId, groupId); + MapMissionManager.updateMapMission(user, EventType.fightEvent, groupId, checkResult[1]); // LOGGER.info("endFight() uid=>{} sMonsterGroup.getRewardgroup()=>{} misson=>{} eventDrop=>{}, missionDrop=>{}", uid, sMonsterGroup.getRewardgroup(), fastFightResponse.getMission(), fastFightResponse.getEnventDrop(), fastFightResponse.getMissionDrop()); MessageUtil.sendMessage(session, 1, messageType.getNumber(), fastFightResponse.build(), true); } @@ -1263,7 +1281,7 @@ public class MapLogic { fightEndResponse.setEventId(nextEventId); // LOGGER.info("endFight() uid=>{},nextEventId=>{}", uid, nextEventId); - MapMissionManager.updateMapMission(user, EventType.fightEvent, monsterGroupId, monsterGroupId); + MapMissionManager.updateMapMission(user, EventType.fightEvent, monsterGroupId, checkResult[1]); // LOGGER.info("endFight() uid=>{} sMonsterGroup.getRewardgroup()=>{} misson=>{} eventDrop=>{}, missionDrop=>{}", uid, sMonsterGroup.getRewardgroup(), fightEndResponse.getMission(), fightEndResponse.getEnventDrop(), fightEndResponse.getMissionDrop()); if (monsterGroupId == mapManager.getSuddenlyBoss()) { mapManager.findSuddenlyBoss(0, 0); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapMissionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapMissionManager.java index 7ad7ced86..808962da1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapMissionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapMissionManager.java @@ -112,60 +112,103 @@ public class MapMissionManager { } int score = sAccomplishmentConfig.getScore(); int[][] values = sAccomplishmentConfig.getValues(); - //逻辑类型14 + //逻辑类型14-------------正确 if(mapMissionType==MapMissionType.KILL_BOSS_IN_BOSS_EVENT){ + if(sChallengeConfig.getDifficultType()!=sAccomplishmentConfig.getValues()[0][0]){ + continue; + } + if(eventId!=sAccomplishmentConfig.getValues()[0][1]) { + continue; + } boolean tempResult = true; - if(sChallengeConfig.getDifficultType()==sAccomplishmentConfig.getValues()[0][0]&&eventId==sAccomplishmentConfig.getValues()[0][1]){ - - HeroManager heroManager = user.getHeroManager(); - Map scHeroMap = SCHero.getsCHero(); - for(Map.Entry entry:mapManager.getHeroAllAttributeMap().entrySet()){ - SCHero scHero = scHeroMap.get(heroManager.getHero(entry.getKey().toString()).getTemplateId()); - if(scHero.getProfession()==sAccomplishmentConfig.getValues()[1][0]){ - tempResult = false; - break; - } + HeroManager heroManager = user.getHeroManager(); + Map scHeroMap = SCHero.getsCHero(); + for(Map.Entry entry:mapManager.getHeroAllAttributeMap().entrySet()){ + SCHero scHero = scHeroMap.get(heroManager.getHero(entry.getKey().toString()).getTemplateId()); + if(scHero.getProfession()==sAccomplishmentConfig.getValues()[1][0]){ + tempResult = false; + break; } } if(tempResult){ allMissionProgress.put(missionId,-1); + needUpdate = true; } + continue; } - //逻辑类型15 + //逻辑类型15------------正确 if(mapMissionType==mapMissionType.KILL_BOSS_INTIME_DIFFICULT_EVENT){ + if(sChallengeConfig.getDifficultType()!=sAccomplishmentConfig.getValues()[0][0]){ + continue; + } + if(eventId!=sAccomplishmentConfig.getValues()[0][1]){ + continue; + } boolean tempResult = false; - if(sChallengeConfig.getDifficultType()==sAccomplishmentConfig.getValues()[0][0]&&eventId==sAccomplishmentConfig.getValues()[0][1]){ - if(time value = (Map)entry.getValue(); - if(value.get(6)!=0){ - alive++; - } - } - if(alive>=sAccomplishmentConfig.getValues()[1][0]){ - tempResult = true; + if(eventId!=sAccomplishmentConfig.getValues()[0][1]) { + continue; + } + int alive = 0; + for(Map.Entry entry:mapManager.getHeroAllAttributeMap().entrySet()){ + Map value = (Map)entry.getValue(); + if(value.get(6)!=0){ + alive++; } } + if(alive>=sAccomplishmentConfig.getValues()[1][0]){ + tempResult = true; + } if(tempResult){ allMissionProgress.put(missionId,-1); + needUpdate = true; } + continue; } + //逻辑类型17-------------------正确 + if(mapMissionType==mapMissionType.FINISH_OPTIONS_DIFFICULT_MAP_EVENT){ + if(sChallengeConfig.getDifficultType()!=sAccomplishmentConfig.getValues()[1][0]||missionValue==-1){ + continue; + } + int[] value = sAccomplishmentConfig.getValues()[0]; + + for(int i = 0 ; i >value.length==1){ + missionValue = -1; + } + allMissionProgress.put(missionId,missionValue); + needUpdate = true; + continue; + + } + + + + + + //逻辑类型19 if(mapMissionType==mapMissionType.KILL_MONSTER_BY_ORDER_DIFFICULT_MAP_EVENT){ - if(sChallengeConfig.getDifficultType()!=sAccomplishmentConfig.getValues()[1][0]){ + if(sChallengeConfig.getDifficultType()!=sAccomplishmentConfig.getValues()[1][0]||missionValue==-1){ continue; } int[] value = sAccomplishmentConfig.getValues()[0]; @@ -186,11 +229,13 @@ public class MapMissionManager { } } allMissionProgress.put(missionId,missionValue); + needUpdate = true; + continue; } - //逻辑类型18 + //逻辑类型18---------------------正确 if(mapMissionType==mapMissionType.FINISH_EVENT_BY_ORDER_DIFFICULT_MAP_EVENT){ int[][] configValues = sAccomplishmentConfig.getValues(); - if(sChallengeConfig.getDifficultType()!=configValues[configValues.length-1][0]){ + if(sChallengeConfig.getDifficultType()!=configValues[configValues.length-1][0]||missionValue==-1){ continue; } for(int i = 0 ; i equipHandBook; + public EquipManager() { this.setRootCollection(User._COLLECTION_NAME); - + this.equipHandBook = new HashMap<>(); this.equipMap = new HashMap<>(); } public void addEquip(User user,Equip equip) throws Exception { updateString("equipMap." + equip.getId(), equip); equipMap.put(equip.getId(),equip); + addEquipHandBook(equip.getEquipId()); user.getUserMissionManager().onGameEvent(user, GameEvent.GET_EQUIP,equip.getEquipId()); } @@ -46,4 +49,15 @@ public class EquipManager extends MongoBase { updateString("unDetermined", unDetermined); this.unDetermined = unDetermined; } + public void addEquipHandBook(int equipId){ + if(equipHandBook.containsKey(equipId)){ + return; + } + equipHandBook.put(equipId,0); + updateString("equipMap." + equipId, 0); + } + + public Map getEquipHandBook() { + return equipHandBook; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java index edc582b90..ad4d6bc66 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java @@ -13,9 +13,13 @@ public class HeroManager extends MongoBase { Map totalCount; + Map heroHandBook; + + public HeroManager() { heroMap = new HashMap(); totalCount = new HashMap(); + heroHandBook = new HashMap<>(); this.setRootCollection(User._COLLECTION_NAME); } @@ -37,6 +41,7 @@ public class HeroManager extends MongoBase { hero.init(this.getRootId(),getMongoKey() + ".heroMap." + hero.getId()); updateString("heroMap." + hero.getId(), hero); heroMap.put(hero.getId(), hero); + addHeroHandBook(hero.getTemplateId()); } public Hero getHero(String heroId) { @@ -57,4 +62,16 @@ public class HeroManager extends MongoBase { public Map getTotalCount() { return totalCount; } + + public void addHeroHandBook(int heroId){ + if(heroHandBook.containsKey(heroId)){ + return; + } + heroHandBook.put(heroId,0); + updateString("heroHandBook." + heroId, 0); + } + + public Map getHeroHandBook() { + return heroHandBook; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java index 9bd9afcd3..f3add02c0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java @@ -790,7 +790,7 @@ public class CombatLogic { return hurt; } List result =new ArrayList<>(5); - for(int i=1;i<=oldRemainHp.size();i++){ + for(int i=2;i<=oldRemainHp.size();i++){ result.add(checkResult[i]); hurt+=(oldRemainHp.get(i-1)-checkResult[i]); }